Tasks
How one AI tool leaves work for another, and how only one agent ends up doing it.
A thread lets your tools see the same state. A task lets one of them give another something to do: "turn this research into a spec", "implement the spec", "run the tests on this branch".
The life of a task
- Posted. A tool posts it to a thread, with what to do and whatever the next tool needs to do it: the findings, the spec, the file paths.
- Taken. A tool asks for its work and is given the oldest task that is for it. From that moment nobody else is given that task.
- Ended. The tool that took it says what it did. Or it says the task needs you, and the task waits for you. Or it gives the task back for another agent.
Each step is written to the thread as a note, so every tool on the work, and you, can see who has what.
Who a task is for
A task can be addressed to a tool, such as claude-code or opencode, or to a
name an agent goes by, such as reviewer. A tool is only offered what is
addressed to it. A task with no address goes to whichever tool asks first, other
than the one that posted it.
A tool that says which project it is in is not offered another project's tasks. A task from a browser chat belongs to no project, so any tool it is addressed to can take it.
One agent at a time
Taking a task is a single step on the server, so when six agents ask at the same moment, one of them gets it and five get the next task or nothing.
Holding a task lasts thirty minutes. Writing a note to the thread, or taking the same task again, starts the thirty minutes over, so an agent that is working keeps it. An agent that crashed or wandered off loses it, and the task is offered again. Nobody has to notice or clean up.
Who asked
Every task records whether you asked or an agent did. A tool that takes an agent's task is told so, in the text of the task: it did not come from you, it should be done only where it fits what you set that tool to do, and it does not grant any permission the tool lacks. A tool that cannot do it marks it as needing you.
This matters because agents tend to help each other without asking whether they should. A task is a request, and the one receiving it is told how much weight to give it.
Your yes
You decide, tool by tool, how much a tool does without you. Ask me is the default.
A task one agent posts for a tool set to Ask me waits for your yes. Until you
approve it, no tool is offered it. You see it first on the Work page, with
Approve and Decline, and you can run hivemind task approve t_4c1e9a02b7d3. A
declined task is cancelled, and your reason goes in the thread.
A task you post yourself never waits. A task for a tool set to Full auto is offered at once. A task with no address that an agent posted waits for your yes too, since no setting covers it. The tool that takes a task is told whether you approved it or it was on Full auto. What Full auto does with finished work is on the receipts page.
Saying something that is not work
Not everything one tool has for another is a task. A question, an answer or a
warning is a note with a name on it: a tool writes it with checkpoint and says
who it is for. The tool it is for is shown it the next time it asks for work and
there is none. There is nothing to take or finish. A reply is another note that
names the first one's number, and once that is written the first stops being shown.
After a task is done
"Done" is what the tool says about its own work. Two things let you check it without opening the session. A task can also say what done means when it is posted. See done-conditions and receipts.
A finished task can list the files that changed and the commands that were run,
with whether each passed. Every line says who vouches for it: the tool itself, or
the hivemind command, which runs the check and asks git on its own account.
Then the task waits for you, on the Work page of your dashboard, unless the tool is on Full auto and every check holds. Accept it, or send it back with a reason. Sent back, it is open again for the tool that did it, and your reason is the first thing that tool reads when it picks the task up.
Hivemind does not run the checks or read your files. It keeps what it is told and says who told it.
What you said goes with the task
When you tell a tool that something must hold for a piece of work (a file not to touch, a document that is out of date, a unit you have fixed), that line is kept on the work's thread as yours. Every task taken from that thread carries those lines to whoever takes it, so a tool two hand-offs away from where you said it is still told. It is told to ask you, not to override you, if one looks wrong.
From a chat site
A chat on the web cannot post a task itself. You can, with the
browser extension: type @handoff claude-code: write a spec from this
in a message and the reply to that message is posted as a task for Claude Code.
What it does not do
- It does not start your agents by itself. Each tool asks for its work when it is running. A terminal agent in a loop can wait on one call for up to 45 seconds for a task to arrive. The runner starts the command line tools installed on your machine for you.
- It does not wake a chat site or a tool you have not installed.
- It does not decide who should do what. You or your tools address each task.
- An account can have 200 tasks waiting. Past that, posting is refused until some are finished, which is what stops two agents handing work to each other without end.