Skip to main content
Adding a code is not a breaking change; renaming or removing one is. The command line prints the message after error: or warning: on standard error. With --json, the code is in error.code or warnings[].code, as The envelope shows. The app shows the message in its own words, under a title that names what failed, such as Couldn’t switch to work. It ends with a step in the app, such as Sign In Again, or with Learn More, which opens the part of this page that lists the code. Where a fix is a command, the app’s way follows it, starting “In the app”. Those steps give the macOS app’s words. On Windows, you select each control, and it reads in sentence case, such as Sign in again. Exit codes says what each exit status means. label_unusable appears only in pitboard log. A row that starts with a tool’s name gives what the code means for that tool. On Windows, a message names claude.cmd or codex.cmd where Pitboard found the one npm installs, as Claude Code does not start in Windows PowerShell says.

Accounts and labels

Parked logins

Switching

These come from a Claude Code or Codex switch. A Claude Desktop switch has its own, in Claude Desktop.

Signing in

Interrupted switches

A Claude Code or Codex switch that was interrupted, and that the next change cannot finish, shows recovery_undetermined in these places: When only Anthropic can identify the login in use, the last two rows show nothing. An interrupted Claude Desktop move has its own codes, in Claude Desktop.

The Pitboard directory

home_not_absolute refuses these values:

Claude Code and Codex files

An error that stops pitboard stow keeps its own code, cause and exit status. The file stays, and the message ends with what stow did first. An ending of that login no longer works means stow renewed the file’s login and could not write it back.

Credential stores and locks

An error that says the refresh token stored is spent keeps the code of what stopped Pitboard saving Claude Code’s renewed login. Running the command again does not mend it: run claude, sign in, then try again.

Claude Desktop

A change to a Claude Desktop account can stop with these codes. So can abandon while a move waits, and uninstall while Pitboard holds a Claude Desktop login or a move of one waits. Where another section lists the same code, such as live_credential_absent, this table gives its Claude Desktop meaning. An interrupted Claude Desktop move shows move_waiting on each read, as Warning codes lists. pitboard doctor lists it under interrupted Claude Desktop move, and the app’s Diagnostics under Switch That Didn’t Finish. A Claude Desktop change stops only where it cannot settle the move.

Renewal schedule

pitboard watch install refuses with the same codes, for the watch service in place of the schedule. Where a fix says to turn on daily renewal again, run pitboard watch install again instead. Where it refuses with schedule_unsupported, leave pitboard watch running in a terminal.

Warm-up

pitboard warm now refuses an account with nothing to start with the code of the reason: limit_used_up, no_reading, nothing_to_start, parked_login_expired or nothing_parked, as When it holds back describes. Where nothing can be warmed up here, it refuses with that reason’s code: switch_interrupted, custom_oauth_endpoint, warm_up_auth_overridden or claude_not_found.

Root, sudo and administrator

Windows

Command output

Stale codes

stale in Status data says why a reading is not live. pitboard status shows its text after the reading’s age, as in measured 14:02, 3m ago · Anthropic could not be reached. The app shows its own words as a note on the account. For a Codex account, the text names OpenAI, Codex and codex.

Cause codes

error.cause says what went wrong in a request to Anthropic or OpenAI. These errors carry one: Every other error has null. checks_failed and output_is_not_a_report have no cause field. error.cause.worth_retrying says whether asking again later could get a different answer.

Warning codes

A warning does not stop the command or change its exit status. In the app, it joins the notice of the switch that raised it, or gets its own notice under the title in this table, in the app’s words.