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, agent rules, team-note sync, auto-update with its last attempt, and the outbox.

”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 the capture daemon is running. /probe read records nothing by design.
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, toggle Session capture off and on again in the wizard’s Settings — 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.

”A tool the docs mention is not in my agent”

probe_procedures and the /set-rule skill are behind a per-user rollout flag, and plugin content cannot vary per user — so on accounts outside the rollout they are simply absent. That is the gate working.

Still stuck