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.- The wizard
- As flags
← / → 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
Records the session
Records the session
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.Keeps the summaries
Keeps the summaries
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.Brings your agent prior work
Brings your agent prior work
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.Tells your agent when a run fails
Tells your agent when a run fails
When a run this session launched or wrote to crashes or is flagged, your agent gets a
[Probe] message about it.Steps aside when the work is not ML
Steps aside when the work is not ML
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
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
.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.