Skip to main content
Start here:
The wizard’s Diagnose screen runs the report below and shows it against the live state of the device — and from there you can act on what it found without leaving: re-pair capture, switch account, resume an import, reinstall a plugin. If you would rather have the report alone, or need it in a script:
Read-only either way. It prints versions, install method, account, plugin status, capture status and credential source, the Probe daemon, agent rules, team-note sync, auto-update with its last attempt, and the outbox. A component marked UPDATE NEEDED says what breaks until you update it.

”My run recorded nothing”

Writes queue locally by default. A queued write is recorded on your machine and not visible to anyone else — the dashboard and the API will not show it.
The wizard names the active account in its On this device block on every screen, and Account → Switch to an account saved here moves you without a browser round trip.
Or read it directly:
The same project name can exist in two tenants. Under the wrong context a list command returns the other tenant’s same-named copy rather than erroring, so a healthy project can read as wiped.
Returns the full decision: the state, which default applied, and whether session capture is running. /probe read records nothing by design.Where the Probe daemon records, probe daemon status says whether it is running, and probe companion log lists every decision it made in the session and why.
probe run end is the delivery barrier. A run left running may still have unsent writes behind it.

”The wall of tiles”

A run page full of single-value tiles instead of graphs means a dimension carried an identifier.
Series count is roughly the product of your dimension cardinalities. Move per-sample identity into labels, and per-item detail into an artifact. See metrics. The failure is silent — every call succeeded and the values are correct — so assert the count after the first run rather than eyeballing the dashboard.

”Search returns nothing”

Search respects the workspace switcher. Choose All workspaces for cross-workspace discovery. This is the most common cause by a distance.
Semantic retrieval is not deterministic between calls. Before concluding something is missing, retry, and prefer a literal identifier — a slug, an issue number, a path — which goes through the exact channel.A degraded state means retry. An empty list under a degraded or capped retrieval is not evidence of absence, and the response says so.
A self-hosted install without the knowledge engine returns state: "partial" with SQL-exact results only — no semantic channel, and no match on run names. See self-hosting.

”Capture says it is on but nothing arrives”

To re-pair it, turn capture off and on again — that clears the credential and the killswitch together and authorizes the device afresh, which is what a half-configured pairing needs.
Working MCP tools do not prove capture is running. The two plugins fail independently. On pi especially, a settings file can load the skills and the MCP manifest without ever spawning the capture daemon — tracking reads as on while nothing is captured.A worktree is the other case: it misses the project-local settings that re-enable capture, and that re-enable is trust-gated per path.

”I signed out but it is still authenticated”

A credential in your shell outranks the config file. Check for PROBE_TOKEN, PROBE_MCP_TOKEN, PROBE_INGEST_TOKEN and PROBE_SERVICE_TOKEN — no command can unset a variable in your parent shell. Open the wizard rather than guessing which one won: it names any it finds, and its Account screen tells you whether the credential that is answering is the file’s or the shell’s.
See Auth and accounts.

”Restore says files are missing”

A recorded git ref only restores where that ref resolves. A commit on an unpushed branch, or a remote the reader cannot reach, restores nothing — the uploaded bytes are what rebuilds the tree.Also: the manifest’s n_pending_upload is a classification count frozen at capture time, not work-remaining. Use --pending-only, which reconciles against what the upload actually did.

”probe run start says the slug does not exist”

Working as designed. The CLI never creates — a near-miss of an existing slug is refused rather than silently creating a second, almost-identical experiment.

”A bare UUID is not found”

A bare ref is the slug. An id is written id:<uuid>.

”The team note is not reaching sessions”

It has a render budget, and over budget the render emits a pointer instead — so an oversized note reaches nobody. Read the recorded budget rather than a remembered number, and run the audit.

”probe refuses my agent’s write”

Where the Probe daemon records, the probe CLI refuses the agent’s own writes: the daemon’s writer records the session. A write you asked for goes through when the agent marks it --directed; anything else goes to the writer with probe ask --writer "<request>". /probe inline hands recording back to the agent for the session. See The Probe daemon.

Still stuck