Troubleshooting

Rows that need a look: one stalled, one that failed, one that needs you and one whose program ended, each with the line Irie shows for it. A dark sidebar whose header counts 2 rows that need you. The first row, fix-cart-total, is red with an exclamation mark: stalled: no hooks within 30s. The second, add-dark-mode, is red with a cross: failed: exit 127 · irie: claude: command not found. The third, write-release-notes, is red with a dot: asks: Which version is this? The fourth, update-dependencies, is dim with a small red dot: exited 1. Irie 0 2 0 0 0 fix-cart-total add-dark-mode write-release-notes update-dependencies 1m1m4m9m stalled: no hooks within 30s failed: exit 127 · irie: claude: command not found asks: Which version is this? exited 1
Rows that need a look. Here each row’s line sits under it; Irie shows the picked row’s line under the list.

When something goes wrong, Irie shows it in the row’s mark, and says why in the line under the list. irie ctl list shows the same line under DETAIL, and irie ctl list --json adds the last lines of the agent’s screen.

Stalled

stalled: no hooks within 30s · <the last line on the agent’s screen>

The agent didn’t report in within spawn.ready_timeout, 30 seconds unless you changed it. Usually it’s waiting for you at the start: to trust the folder, to sign in, or to accept something on its first run.

Failed

failed: exit 127 · irie: claude: command not found

The agent’s program ended before it got going. Its exit code and its last screen line say why.

The line ends withWhat to do
exit 127 · irie: claude: command not foundIrie couldn’t find the program. Install it, or put its full path in the profile’s command. Irie’s tmux keeps the PATH it started with, so a folder you added since isn’t searched.
Claude Code’s own message about a model, effort or permission modeClaude Code turned down a value in the profile, such as a model your account can’t use. Change the profile, then restart the core.
exit 126 · irie host: …Irie couldn’t read the session’s launch file. Start the task again, and report a bug if it happens again.

The agent’s last screen stays: show the row to read all of it.

Needs you

The line saysWhat happenedWhat to do
asks: …The agent asked you a question.Show it and answer.
needs permission: …It wants your go-ahead for a step, such as a command.Show it, then allow or refuse.
wants the plan approvedIt made a plan, and waits for you.Show it and decide.
… asks: …A tool server the agent uses wants your input.Show it and answer.
turn failed: rate_limitClaude Code hit a usage limit.Wait until the limit resets, or start the task again on another profile.
turn failed: authentication_failedClaude Code’s sign-in failed.Sign in to Claude Code again, then show the row and carry on.
turn failed: billing_errorA problem with your account’s billing.Check your account.

The row goes back to working at the agent’s next step. Moving a task to another profile when it hits a usage limit is planned. Planned

Exited

exited 1

The agent’s program ended after it got going, for example because you quit it. The mark is red if it ended with an error, and Claude Code’s reason, when it gives one, follows the code.

The last screen stays: show the row to read it. An ended row stays in the list, since closing rows, and reopening one with its conversation, are planned. Planned

A row that always says working

Agents from a generic profile don’t report in, so Irie knows only whether their program is still running. Their rows show working until the program ends, then exited.

core offline

The list can’t reach Irie’s core. Irie restarts the core on its own, waiting a little longer each time, up to 30 seconds, and the list tries again every second.

If it stays offline, run irie up in another terminal, and read the end of ~/.local/state/irie/core.log.

Messages from irie

MessageWhat to do
Irie is not running; `irie up` starts itirie ctl list, show and watch need a running Irie. Run irie up.
already inside tmux; run `irie attach --nested` to open Irie inside itRun irie outside tmux, or add --nested.
tmux not found: install it or set tmux.pathInstall tmux, or set tmux.path to its full path.
the core did not answer within 5s (…); see …/core.logThe core didn’t start. The log says why.
config …: unknown key "…"A setting Irie doesn’t know: a typo, or one from a later milestone. Fix or remove it.
config …: spawn.default_profile = "fast": no such profileA value that makes no sense. The message names the setting and what it must be.

When a task won’t start

Nothing starts, and the line under the list turns red. From irie ctl spawn, the same message ends the command.

MessageWhat to do
no repo named @shp; closest: @shopUse one of the names it suggests, or give the folder.
no repo named @shop, and no repos are known: …Tell Irie where your projects live, with repos.roots, or give the folder.
@shop fits 2 repos: …; give the path of the one you meanGive the folder of the one you mean.
… has no commits yet: commit once, or add ! to run in the checkout itselfA worktree needs a commit to start from.
worktree.base "…" is not a commit in …Point worktree.base at a commit that repo has.
@…: no such directory: …The folder doesn’t exist.
@./shop: give an absolute path, a ~/ path or a repo nameWrite the folder from ~/ or /.
no profile +fast; the profiles are claude, localUse one of those, or add the profile and restart the core.
only one +profile per task, only one @ target per taskKeep one of each.
empty taskWrite a task after the @ and + words.
unknown command :pauseCommands that start with : are planned. Planned
paste too long for the command bar (… lines); …The box holds 10,000 lines at most. Save the text to a file and name the file in the task.
git worktree add …: …git couldn’t make the worktree; the rest is git’s own message.

Warnings after a start

These show in the line under the list once a task starts, and irie ctl list --json lists them under warnings. The agent runs anyway.

WarningWhat it means
1 uncommitted change in the main checkout was not carried overChanges you hadn’t committed stayed in your checkout. Commit them, and start again if the agent needs them.
.env not copied: …, no local files copied: …A local file couldn’t be copied into the worktree.
submodules not checked out: …git couldn’t check out the repo’s submodules in the worktree.
pause off: Claude Code … is older than 2.1.295Pausing agents will need Claude Code 2.1.295 or later; nothing else changes today. Planned
--name left out: `claude --help` does not list itYour Claude Code doesn’t take --name, so its own session isn’t named after the row.

Every step blocked after moving irie

Agents report to Irie through irie, by the path it had when they started. If you moved or deleted it, Claude Code 2.1.295 and later block their steps: put irie back, or build it again in the same place with go install.

Where Irie keeps things

PathWhat’s there
~/.config/irie/config.tomlYour settings, if you made the file.
~/.local/state/irie/core.log, ui.logWhat the core and the list did, with their errors.
~/.local/state/irie/journal/Every event, one file per day, kept for 30 days.
~/.local/state/irie/sessions/<id>/Each session’s task, task.md; how it was started, spec.json; Irie’s hooks for it, claude-settings.json; and how it ended, exit.json.
~/.local/state/irie/tmux.confIrie’s own tmux settings, written for you.
~/.local/share/irie/scratch/The folders of tasks that named no project.
~/.local/share/irie/worktrees/Worktrees, a folder per repo.

With XDG_CONFIG_HOME, XDG_STATE_HOME or XDG_DATA_HOME set, these live in those folders instead. Scratch folders and worktrees stay until you remove them.

Still stuck?

Search the issues, then report a bug. Give irie version, your system, tmux -V and claude --version, and the lines of core.log from around the time, with anything private taken out.

For a security problem, don’t open an issue: see SECURITY.md.