Skip to main content
Every error and warning pitboard reports has a stable code. Adding a code is not a breaking change; renaming or removing one is. The command line prints only the message, after error: or warning: on standard error. With --json, the code is in error.code or warnings[].code, as JSON output describes. The app shows the same message under a title that says what failed, such as Couldn’t switch to work or Couldn’t read usage. For each exit status, see Exit codes. In the tables, <label> is the account’s label, such as work or codex/work.

Accounts and labels

Parked logins

Switching

Signing in

Interrupted switches

The pitboard directory

Claude Code and Codex files

Keychain and locks

Renewal schedule

Command output

Cause codes

Three errors carry error.cause, which says what went wrong underneath: identity_unverifiable, session_expired (always token_expired) and renewal_failed (when known). Other errors have null, except checks_failed and output_is_not_a_report, which have no cause. error.cause.worth_retrying says whether asking again later could get a different answer.

Warning codes

A warning does not stop the command. The pitboard window shows it in the notice about the switch that caused it, or in a notice with the title in this table. label_unusable appears only in pitboard log, where it records a label refused with usage.