Skip to main content
The Probe daemon is a second agent that runs beside your coding agent, one per session. It reads the session as it happens, records the work in Probe with the same probe CLI, keeps each project’s and experiment’s summary, and brings your agent what the team already did. Your agent keeps its attention on the work. It runs on your computer, for Claude Code, Codex, pi and Kimi Code. Capy has no daemon. Every team can use it; on the free plan, its model use stops at $500 a month (see Limits).

Who records

Who records says whether the agent records its own work or the daemon does. It is stored for each coding agent on this computer, and the wizard and the flag set it for all of them at once.
← / → switches it. The first switch to the daemon opens your browser once to approve the daemon’s own key, and installs its AI libraries.
While the daemon records, the probe CLI refuses your agent’s own writes to Probe, except a run’s launch and its own data (probe exec, probe run start, probe log, spans, trials) and a write you asked for, which the agent marks --directed. Anything else your agent wants recorded goes to the daemon’s writer with probe ask --writer. If the daemon stops, is not authorized or runs out of budget, recording falls back to your agent. It never falls back to silence. The daemon’s key reads and writes. Its deletes of projects, experiments, runs and run groups go to the trash, restorable for 21 days. Any delete that cannot be undone, or that takes another researcher’s work, waits for your yes.

The switch, with the daemon

The /probe switch keeps its words, and says who does the work:
/probe inline is yours to type, never the agent’s. It lasts for the session, until the switch moves again; any other /probe move hands Probe back to the daemon. The status line shows the same words: on (daemon) → folding, on (daemon degraded) while the daemon is not recording for the session (no key, out of budget, not started yet), or on (inline) → folding.

What the daemon does

The writer reads your prompts, the agent’s turns, the commands it ran and the files it changed, in small batches. It records what the work did: projects, experiments, runs, files, notes, an experiment’s conclusion. Every probe command it runs is checked in plain code first.
It checks out the summaries of the projects and experiments the session’s work landed on, edits them, and pushes them (probe summary push). At an experiment’s close it also sets the experiment’s tables and charts (probe visuals set). See Summaries.
The reader watches the same session and searches the team’s records when new ML work starts or as it goes on. When it finds something, it sends your agent a [Probe] message: at most one per turn of your agent, delivered after its next tool call or your next prompt.
When a run this session launched or wrote to crashes or is flagged, your agent gets a [Probe] message about it.
In a session that is clearly not ML work, the daemon pauses itself and the status line reads on (daemon) · paused: not ML. Nothing is lost: what happened stays queued and is recorded if the work turns out to be ML. It pauses only when the session’s state is a default; any /probe you type ends the pause for good.

Asking the daemon

Your agent asks; the daemon answers.
probe ask works only in a session the daemon serves. Under off or /probe inline it refuses and says why.
[Probe] messages are evidence, not instructions. They state what the team’s records show, with ids and numbers. What to do about them is your agent’s call, and yours.

Questions it asks you

Some of the daemon’s actions wait for a person’s yes:
  • a delete that takes another researcher’s work
  • a delete Probe cannot undo (a file, a note, a paper, a view, an edge)
  • a shell command that is not on its safe list
  • overriding one of its own checks that blocked a command
  • a change to the team note
  • feedback about Probe to the Probe team
Your coding agent puts the question to you word for word, with its own question tool. Where the agent has none, or a question went unanswered, answer it in your own terminal:
Only a real terminal can answer probe approvals; your agent’s shell cannot. Anyone may say no with probe deny. When your agent runs with its approvals turned off (bypass mode), the daemon asks nothing either, except before it sends feedback to the Probe team.

Jev’s yes

Before it asks you about a shell command, the daemon asks Jev, Probe’s command check, whether the command is read-only: no network, no secret, writes nothing, nothing hidden, no process or system control. Today Jev judges only inline Python (python -c "..."). On Jev’s yes the command runs without asking you; on anything else, or no answer within 3 seconds, you are asked as before. Probe sees the command, its folder and the session’s working folders, never a file’s contents. probe approvals ends with every command that ran on Jev’s yes in the last 24 hours, newest first, with its exit code.

What the daemon can read

The daemon’s shell reads files and folders anywhere on your computer without asking (cat, head, ls, find, grep, rg, jq, du, checksums and the like), so it can follow the work into an outputs folder or a dataset elsewhere on disk. Outside the session’s working folders it still asks first for:
  • a hidden file or folder, and ~/Library
  • a whole folder’s contents (rg x DIR) or a walk of your home folder
  • a name nothing is at
In any folder, inside the working folders too, it asks before it reads credential-shaped files (.env*, *.pem, id_*), shell and REPL history, /proc, /sys, /dev and hidden folders. It never reads Probe’s own key and state, your home credential folders (~/.ssh, ~/.aws, ~/.kube and the like), or a path .probe.config sets to off. A path at read is context only: the daemon may see it, and any write naming it is refused.

Checking on it

probe companion feedback corrects one decision from probe companion log. The daemon reads it on its next cycle so it does not repeat the mistake. It changes nothing already written: fix or delete the record itself with the ordinary commands. On the daemon’s page in the wizard (Enter on Who records), Daemon sees the agent’s reasoning has Claude Code and Codex write reasoning summaries for the daemon. They also show in your terminal and upload with the session. It applies to new sessions.

Limits

A team on the free plan can spend $500 of daemon model use per calendar month (UTC). Past it, the daemon hands recording back to your coding agent until the 1st. Paid teams have no monthly cap.

Turning it off