Skip to main content
Commands follow the order of pitboard --help. pitboard --help and the shell completions leave out manpage. On Windows, the help names no Claude Desktop label.

Default command

pitboard alone runs pitboard status, and pitboard --json runs pitboard status --json. The options of status need its name: pitboard status --offline.

Global options

  • Every command but help takes --help.
  • Every command but help, completions and manpage takes --json.
  • --json goes before or after the command: pitboard --json use work is pitboard use work --json.
  • pitboard help <command> prints the same help as pitboard <command> --help.
  • Only pitboard itself takes --version.

Labels

A label names one account within its tool, so each tool can have a work. Labels compare exactly: Work and work are two labels. A label you choose, for pitboard enroll or as the second label of pitboard rename, follows these rules. Breaking one exits 2 with error code usage. What a bare label, one with no prefix, means depends on the command: Pitboard writes a label the way a command takes it: Against the enrolled accounts, a label fails with exit status 1: On Windows and Linux, pitboard enroll refuses a desktop/ label with live_store_unsupported and exit status 3.

Output

Pitboard colours output to a terminal, and none to a file or a pipe. JSON output never has colour. NO_COLOR, set and not empty, turns colour off. CLICOLOR_FORCE, set and not empty, turns it on for a file or a pipe too. NO_COLOR wins when both are set. statusline has its own colour rules.

Questions before deleting

pitboard forget, pitboard stow and pitboard uninstall ask before they delete anything. They ask when standard input and standard error are both terminals and --json is not given. --yes or -y skips the question. Only y, Y and yes go ahead. Any other answer, an empty one included, changes nothing, prints nothing more and exits 0. With standard input or standard error redirected, as in a script or 2>/dev/null, or with --json, each needs --yes. Without it, the command changes nothing and exits 2 with confirmation_needed. With nobody to ask, these answer as they do with --yes:
  • pitboard stow with nothing behind the keychain or Credential Manager, as always on Linux, or with a login of an account not enrolled.
  • pitboard forget with a label that names no account. It fails with that label’s error, such as account_unknown.
  • pitboard forget and pitboard uninstall where Pitboard may change nothing, and pitboard stow there once it finds a file to put away. Each fails with the reason, elevated or system_too_old.
With nobody to ask, a refusal found only once the command runs shows only with --yes. Without it, the answer is confirmation_needed. Forgetting the account in use is one, with cannot_forget_active_account. identity_unverifiable, custom_oauth_endpoint, app_open and uninstall’s pitboard_open are others. pitboard use asks only where Anthropic refuses the refresh token of Claude Code’s login in use for good, before it puts the account’s login in its place. It asks and takes --yes as these do. With nobody to ask and no --yes, it changes nothing and exits 1 with live_login_refused.

Exit codes

pitboard doctor also exits 3 when a check fails. Exit status 2 covers:
  • An unknown command or option, or an extra word: pitboard status --verbose, pitboard status work.
  • A missing argument: pitboard use.
  • A value out of range or not offered: pitboard watch --at 40, pitboard completions fish2.
  • --offline together with --fresh.
  • pitboard schedule with no subcommand, which prints its help on standard error.
  • A chosen label that breaks a rule in Labels.
  • --json on help, completions or manpage.
  • forget, stow or uninstall without --yes where it cannot ask, as Questions before deleting describes.
status, renew and statusline report some failures in their output and still exit 0. Each command’s entry says which. For the exit status of every error code, see Error and warning codes.