.probe.config file sets how much Probe may touch the paths under its folder. Put one in any folder: it covers that folder and everything below it, in the same syntax as a .gitignore. It works whichever folder your coding agent was started in.
~/code/client-x/.probe.config
Levels
Every line gives the paths it matches a level:@probe <level> on a line of its own sets the level of every line after it, so written first it is the file’s default:
.probe.config
read and off both stop recording: no run is opened there, and no artifact, note or daemon record is made about those paths. Only the daemon tells them apart: with read it still sees the work, so it understands the session; with off it never does. Your agent’s own searches of your team’s history still work, and session transcripts are still uploaded.hash: lineage for data Probe must not read
Use hash for data whose contents must stay on your machines but whose history you still want: patient records, customer data, anything licensed. Steps over it still become runs, and each file a step reads or writes is recorded as a hash and a row count, so the record shows that one step read raw.jsonl (30,000 rows) and wrote clean.jsonl (29,156 rows) without Probe ever seeing a record (probe run inputs lists a run’s reads).
Probe does not link runs by matching those hashes. A run’s link to the dataset or checkpoint it used comes from a use that your agent or the SDK records, naming a fixed version (probe dataset use dataset:<name>@<N> --run <run>, or run.use_dataset in the SDK).
data/.probe.config
- A step that is not a Python script (
head,jq,cat | shuf) names its files so they are hashed too:probe exec --input raw.jsonl --output clean.jsonl -- sh -c "...". probe execkeeps no console log when its folder, or any path it names, ishash,readoroff: the step may print records.- A file under 64 bytes is recorded with its path and size only, no hash. A hash reveals a file’s contents only to someone who can already guess them exactly; for a short, predictable file that is easy, so Probe does not send one.
- Uploads (
probe dataset add --upload,log_dataset(upload=True)) of ahashpath are refused. A checkpoint saved in ahashfolder is recorded as a reference (path, hash, size, step), never uploaded. - One path has one level, so
readandhashdo not combine.
Common setups
- One repo out
- Only some repos in
- Some paths out
- Look, don't record
- Machine-wide
In the repo’s root:
.probe.config
How a path is decided
1
Walk up from the path
Every
.probe.config from the path up to / counts, including files above a repository’s root. A folder without one inherits its parents’ rules.2
The last matching line wins
A later line beats an earlier one, and a deeper file beats a shallower one.
/probe on cannot override a level; edit the file instead.3
An off folder is closed
As in git, nothing inside a folder at A folder at
off is looked at, its own .probe.config included, and no line turns anything inside it back on. To keep one file, close the contents instead of the folder:.probe.config
read or on stays open: what is inside takes the folder’s level unless a line matches it directly. A deeper .probe.config may narrow a read folder to off, but never turns it back on.4
No match: the session decides
Otherwise the session’s
/probe on, read or off decides, as before. A level only ever narrows what the session allows.Files above where the agent started
A.probe.config in the folder the agent started in, or below it, always applies. One above that folder is yours to follow or set aside for each session: the agent asks you once, the first time Probe comes up, and follows the file until you answer.
What is enforced where
The daemon works from what the agent’s commands say. A program that opens an
off file without its command naming it (a training script reading data/) is outside this, as is text you or the agent type into the chat. Session transcripts still upload whole.Replacing folder defaults
probe session default --folder and the .probe/config.json files it wrote are retired. An old one set to off or read still keeps its folder out of Probe in coding-agent sessions, the only place it ever applied. probe doctor lists them, and probe doctor --fix turns each into a .probe.config.