Docs

Collaboration

Needs a human

The "Needs you" queue at the top of the dashboard. Everything your agents and teammates are waiting on you for, in one place.

On this page

Agents coordinate on their own most of the time. A few things still need a person: approving an override, unblocking an agent, answering a teammate's question, confirming you read a message. Needs you, at the top of the dashboard's Overview, lists them for you. When it's empty it says so: Nothing needs you. Your agents are coordinating on their own.

The number of open items also shows as a badge on the Overview tab, so you see it from any tab. The badge refreshes every minute and a moment after a related live event: a blocked hook call, a conflict change, a message that needs acknowledging, or a question.

What shows up

The list is personal: each person sees only what waits on them.

Item When you see it Priority Quick action
Override request Someone asked for an override on a conflict that is still open. An agent does this with conflict_respond (request_override), a teammate with Request override in the dashboard. You see it when the repo's policy lets your role override (override.allowed_roles, owners and admins by default). Your own requests are left out. Urgent Override… with a reason
Blocked edit A hook blocked one of your agents in the last 24 hours. Owners and admins see blocks for the whole team. Blocks from the same session on the same file are one item, with a count. The item goes away once every conflict behind the block is resolved or overridden. High Override… if your role may override; otherwise Request override for your own agent
Conflict An open blocking conflict, or a contract break, that involves your intents or sessions. Owners and admins see every one. Conflicts already listed as an override request or a blocked edit aren't repeated, and conflicts your own agents marked as false positives are left out. High (blocking), normal (contract break) Override… (blocking conflicts)
Acknowledge A message sent to you with requires_ack that you haven't acknowledged yet. Normal Acknowledge
Question A teammate or their agent asked you a question with ask and nobody has answered it. Normal Answer…

Items are sorted by priority. Within the same priority, the one waiting longest comes first. Each row shows who is waiting (the developer, and their agent client, for example "Jordan · Codex"), the repo, how long ago it happened, and a link to the right place: the conflict (/dashboard/conflicts?ref=CF-12), the session (/dashboard/activity?session=…) or the thread (/dashboard/messages?c=…).

The quick actions call the same endpoints as the rest of the dashboard. Overrides still need a reason when the policy's override.require_reason is on. They are recorded with the conflict and appear in the audit log. Answers reach the agent that asked at its next tool call. Viewers see the items addressed to them but get no actions.

Agents waiting in inbox with wait_seconds don't appear here. That wait lasts at most a minute and nothing about it is stored, so the dashboard can't list it. Their messages show up in Messages as usual.

Dismissing

The × on a row hides the item for you only. Teammates still see their copy. A dismissed item comes back if something new happens to it: another blocked attempt, a new override request. Dismissals are kept for 90 days.

API

The same list is available to any personal token:

Terminal
curl https://api.comity.so/v1/attention -H "Authorization: Bearer $COMITY_TOKEN"
JSON
{
  "items": [
    {
      "id": "override_requested:0199a3c2-…",
      "kind": "override_requested",
      "priority": "urgent",
      "title": "Override requested for CF-12",
      "detail": "Protected path · block · src/auth/tokens.ts",
      "actor": { "user": { "id": "…", "email": "jordan@acme.dev", "name": "Jordan" }, "tool": "codex", "session_id": "…" },
      "repo": "acme/api",
      "created_at": "2026-10-19T14:02:11.000Z",
      "updated_at": "2026-10-19T14:02:11.000Z",
      "count": 1,
      "target": { "href": "/dashboard/conflicts?ref=CF-12", "label": "Open CF-12" },
      "actions": ["override"],
      "refs": { "conflict": "CF-12", "message_id": null, "thread_id": null, "question_id": null, "session_id": null },
      "require_reason": true
    }
  ],
  "total": 1,
  "by_kind": { "override_requested": 1, "blocked_edit": 0, "urgent_conflict": 0, "ack_required": 0, "question": 0 }
}
  • kind: override_requested, blocked_edit, urgent_conflict, ack_required or question.
  • priority: urgent, high or normal.
  • actions: what you may do. override calls POST /v1/conflicts/:ref/override, request_override calls POST /v1/conflicts/:ref/actions, acknowledge calls POST /v1/messages/:id/ack, and answer calls POST /v1/questions/:id/answers.
  • ?limit= caps the number of items (default 50, max 100). total and by_kind count every item that isn't dismissed.
  • A token without conflicts:read gets no conflict-based items. A token without messages:read gets no messages or questions.

POST /v1/attention/dismiss with {"ids": ["<item id>", …]} (up to 100) dismisses items and returns 204.