Stop watching AI work.

Run several coding agents. Keep working. Come back only when one is done, or needs you.

0 free2 busy1 needs you
  • codestatusClaude Code · Terminalrunning tests
  • nora-apiClaude Code · VS Codeapproval requested
  • landingCodex · Terminalrewriting copy

Every Claude Code and Codex session on your Mac. Click one to land back in its terminal tab or workspace.

The CodeStatus menu bar popover: three sessions with their provider, state, and elapsed time, a note that three more are not reporting yet, and Refresh and Settings along the bottom.

Counts in your menu bar. Click them for the same list.

What it is not

Not a prettier Activity Monitor.

CPU tells you nothing about whether an agent is thinking, running a tool, or waiting on you. Lifecycle hooks tell you exactly.

  • Hooks are the source of truth

    State comes from the agents' own official lifecycle events.

  • Processes are only for facts

    Discovery, enrichment, and real death. Never state.

  • Unknown stays unknown

    A quiet session is never announced as finished.

Privacy

Structural, not a promise.

No account, no server, no telemetry — there is no network code in the product at all.

  • The allowlist lives in the hook

    It walks past everything not on it, without ever copying those bytes.

  • Your prompts cannot leak

    Not to the socket, the logs, or the crash reporter. A test asserts it.

  • 225 KB, no Foundation

    The hook has no general-purpose parser to leak through.

All we read

  • session id
  • provider
  • event
  • timestamp
  • pid
  • tty
  • working directory
  • git root
  • workspace
  • host app

How it works

Hooks, not guesswork.

Claude Code / Codex
        │  official lifecycle hook (async, never blocking)
        ▼
codestatus-hook          ← metadata allowlist applied here
        │  one NDJSON line over a Unix domain socket
        ▼
CodeStatus daemon
        │
        ├── StateReducer      pure, idempotent, out-of-order tolerant
        ├── SessionRegistry   the single source of truth
        └── ProcessWatcher    kqueue NOTE_EXIT — discovery and death
                │
                ▼
        HUD · sound · notification
  • Async hooks cannot interfere

    Never blocking, approving, or altering the agent's flow — enforced by the agent, not by us.

  • Config edits are byte-preserving

    Your settings.json is spliced, never re-serialised.

  • Nothing is inferred from time

    A ten-minute tool call is still busy. Only our confidence decays.

Capabilities

Limitations are stated, not hidden.

EnvironmentDiscoveryBusy/freeApprovalInputOpenSend prompt
Claude Code CLIyesyesyesyesyestabno
Claude Code in VS Codeyesyesyesyesyesworkspaceno
Codex CLIyesyesyesnoyestabno
Codex in VS Codeyesyesyesnoyesworkspaceno
Codex input
No Notification event exists to observe it.
Codex in VS Code
Runs as app-server, and delivers the same hooks the CLI does.
Send prompt
Only for sessions we launch ourselves, through a PTY.

Questions

What people ask before installing it.

  • How do I get notified when Claude Code finishes?

    Install CodeStatus and it registers a hook with Claude Code during onboarding. When a turn ends you get a macOS notification naming the repository, and the menu bar count moves from busy to free. Nothing to configure per project.

  • Can I track several coding agents at once?

    That is the reason it exists. Every Claude Code and Codex session on the Mac appears in one list with its own state, so you can start four and keep working instead of tabbing between terminals to check on them.

  • Does it work with Codex, including inside VS Code?

    Yes, both the Codex CLI and Codex in VS Code, which runs as an app-server and delivers the same hooks. Codex requires you to approve hooks once with the /hooks command before it will run them — a security control CodeStatus deliberately does not automate.

  • How does it know an agent is busy rather than just quiet?

    It reads the agents' own lifecycle hooks, so state is reported rather than inferred. CPU is never an input: an agent waiting on a network response burns none, and one running a six-minute build burns plenty. When nothing has been reported, the session reads as unknown instead of being announced as finished.

  • Does it send my prompts or code anywhere?

    No. There is no network code in the product at all — no account, no server, no telemetry. The hook copies an allowlist of metadata such as session id, event name and working directory, and walks past everything else without ever reading those bytes.

  • Does it support Cursor, Windsurf, or Gemini CLI?

    Not today. It supports Claude Code and Codex, because it depends on official lifecycle hooks and those are the agents that expose them in the form it needs.

  • How much does it cost?

    Nothing. It is free and MIT licensed, and the source is on GitHub.

Get it running in a minute.

Free and MIT licensed. Onboarding installs the hooks and leaves the rest of your config untouched.