Help
Troubleshooting
Fix comity doctor failures, hooks that don't run, MCP auth errors, revoked tokens, plan limits and fail-open behavior.
On this page
- comity doctor checks
- config: not logged in
- server: unreachable or slow
- token: rejected by server (401)
- token: missing scopes hooks:evaluate, mcp:tools
- git: not inside a git repository / has no remotes
- claude_code hooks / codex hooks: not installed or missing events
- claude_code mcp / codex mcp: authenticates with COMITY_TOKEN, which is unset
- omp extension: from another CLI version / not the Comity bridge
- round trip: session_start failed
- CLI up to date: newer version available
- Hooks don't seem to run
- The agent never mentions Comity
- MCP errors
- Token revoked or member removed
- Plan limits
- Fail-open behavior
- Windows
- Still stuck
Start with comity doctor in the repo where your agent runs. It prints a › hint under every warning and failure; this page explains each one.
comity doctor checks
config: not logged in
Run comity login. On a headless machine, comity login --token cmt_… or set COMITY_SERVER and COMITY_TOKEN.
server: unreachable or slow
- unreachable: check the network, VPN or proxy, and the server URL (
COMITY_SERVER, orcomity login --server <url>). - reachable in N ms (above the 400 ms hook budget): before-edit checks that take longer than 400 ms are skipped (the edit proceeds without coordination). Try another network; a VPN often adds the latency.
token: rejected by server (401)
The token was revoked (on the Team tab, or because you were removed from the org), expired, or belongs to a different server. Run comity login again. If COMITY_TOKEN is set in your shell, it overrides the stored login: update or unset it.
token: missing scopes hooks:evaluate, mcp:tools
The token wasn't created by comity login (for example a service token or a custom-scoped one). Run comity login for a personal token with every CLI scope.
git: not inside a git repository / has no remotes
Hooks only coordinate git repositories with at least one remote, because the remote identifies the repo across machines. Run the agent inside the repo, or add a remote: git remote add origin <url>.
claude_code hooks / codex hooks: not installed or missing events
Run comity init --tools claude_code (or codex) in the repo, then commit the files. If you edited the hook files by hand, re-running init restores Comity's entries without touching yours.
claude_code mcp / codex mcp: authenticates with COMITY_TOKEN, which is unset
The MCP entry was written by an older CLI or by hand and relies on COMITY_TOKEN. Re-run comity init --tools <tool> to use comity mcp-headers, or set COMITY_TOKEN.
omp extension: from another CLI version / not the Comity bridge
Re-run comity init --tools omp after updating the CLI; it rewrites .omp/extensions/comity/index.ts.
round trip: session_start failed
The server is reachable and the token valid, but the hook endpoint failed. The detail shows why. Until it works, agents run without coordination (fail-open).
CLI up to date: newer version available
Run comity update.
Hooks don't seem to run
- Codex: open
/hooksin Codex and approve the comity hooks. Codex skips unapproved project hooks, andcomity doctorcan't see the approval. - Claude Code: accept the folder trust prompt. Untrusted folders don't run project hooks.
- Cursor: turn on Include Third-Party Plugins, Skills, and Other Configs (Cursor Settings → Agents → Third-Party Imports) and check the Hooks output channel.
- The CLI isn't on the agent's
PATH: the committed hooks exit silently whencomityisn't found. Runcommand -v comity(orwhere comityon Windows) in the environment the agent starts from. - Not logged in on this machine: hooks skip silently without a server and token.
- Look at
hook.login the CLI config folder (~/.config/comity/hook.log, or%APPDATA%\comity\hook.logon Windows). Every hook that failed open writes one line with the host, event, session and error.
Your session should appear in the dashboard under Activity within seconds of starting the agent.
The agent never mentions Comity
Ask it: "What did the Comity briefing at session start say?" If it has none, the SessionStart hook didn't run (see above). If it has the briefing but doesn't use the MCP tools, check the MCP connection (/mcp in Claude Code or Codex) and add the agent instructions to CLAUDE.md / AGENTS.md.
MCP errors
| Error | Fix |
|---|---|
401 unauthorized when connecting |
The client sent no token or a revoked one. Claude Code runs comity mcp-headers only in trusted folders; elsewhere it falls back to COMITY_TOKEN. Cursor and other clients need COMITY_TOKEN exported before they start. |
| Tool error listing several repos | You have recent sessions in more than one repo; pass repo or session_id. |
plan_limit (402) |
See Plan limits. |
rate-limited (429) |
More than 20 messages per minute (200 per day) or 10 questions per minute (100 per day). Wait for Retry-After. |
403 forbidden (token lacks scope mcp:tools) |
The token lacks mcp:tools (service tokens can't have it). Use a personal token. |
Not found (404): session not found |
The session_id passed isn't one of your sessions. Copy it from "Your Comity session: …" in the current briefing, or omit it. |
Token revoked or member removed
A revoked token fails everywhere at once: hooks skip silently (fail-open), MCP returns 401, comity status shows token rejected by server. Run comity login on that machine. A removed member's tokens are revoked for that org.
Plan limits
On the Free plan, the first 5 developers active in a month are coordinated; others aren't, until the next month or an upgrade:
- their agents get one notice per session ("Comity plan limit: …") and then run uncoordinated (hooks allow everything),
- their MCP tools return
plan_limit, comity statusshowsover limitand who isn't coordinated.
A 4th repository on Free isn't registered: hooks in it allow with a notice. An owner can upgrade in Settings → Plan & usage; caps lift immediately. See Billing & plans.
Fail-open behavior
Comity never stops an agent because Comity itself has a problem. When the API is unreachable, slower than 400 ms before an edit (1.5 s for other events), or returns an error, the hook prints nothing and the agent proceeds as if Comity weren't installed, and one line goes to hook.log. Blocks only happen when the API answers with a block under your policy. If you expected a block and didn't get one, check hook.log and the server latency in comity doctor.
Windows
- Claude Code runs hook commands through Git Bash; install Git for Windows.
- Codex runs them through Windows PowerShell;
comity initwrites acommandWindowsvariant that findscomity.cmdand works under the default execution policy. comity updatefailing withEBUSY/EPERM: close other terminals and agent sessions usingcomity, then run the printednpm install -g …command.
Still stuck
Run comity doctor --json and comity status --json, include the last lines of hook.log, and email hello@comity.so.