> ## Documentation Index
> Fetch the complete documentation index at: https://docs.prbe.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Session capture

> What leaves your machine, who can see it, and every way to stop it.

Session capture streams your coding-agent sessions into the team knowledgebase, so the reasoning behind a run is searchable next to the run itself.

It is the one feature that moves your own words off your machine, so this page is explicit about it.

Claude Code, Codex, pi and Kimi Code sessions are captured live on this device by the capture plugin. Capy keeps no transcript on your computer, so its threads are captured another way: see [Capy threads](#capy-threads).

## What is sent

> **Sent**
>
> * Your prompts, and the images you paste into them
> * The assistant's replies
> * The shell commands you run

> **Not sent**
>
> * File contents
> * Tool output

**Captured sessions are visible to your whole team.**

Images you paste upload **unscanned**: a screenshot that shows a credential is uploaded with it. Turn that off in the wizard's **Settings → Upload images you paste**.

Where [the Probe daemon](/agents/daemon.md) records, it can also have Claude Code and Codex write reasoning summaries for it. Those show in your terminal and upload with the session. The wizard's **Daemon sees the agent's reasoning** row turns them on or off.

> [!WARNING]
>
> Credential-shaped values are replaced before upload — but **that is a filter, not a guarantee.** Keep live credentials out of your prompts. A secret pasted into a conversation is a secret you should rotate, whether or not the filter caught it.

## Consent

Capture is **per-device**, and it is disclosed twice before it starts: once on the wizard's review screen, and again at the browser approval. Provisioning a fleet from one image does not share a pairing — each machine authorizes itself.

## Turning it off

**The wizard**

```bash theme={null}
npx probe-research          # → Uninstall Probe
```

The wizard installs Probe whole and removes it whole, so its Settings screen has no capture row. **Uninstall Probe** stops capture along with everything else. To turn capture off and keep the rest, use the command.

**Command**

```bash theme={null}
probe wizard --no-capture --yes
probe wizard --no-capture --uninstall --yes    # also remove the tap plugin
probe wizard --agent codex --no-capture --yes  # one agent only
```

Turning capture off stops the upload immediately and unpairs this device's capture credential. The tracking plugin stays installed. `--uninstall` is off by default: turning capture off keeps the plugin unless you say otherwise.

**Just this conversation**

```text theme={null}
/probe read
```

```bash theme={null}
probe session state read
```

This stops recording for the conversation without changing the device.

### The killswitch

Turning capture off writes a killswitch alongside clearing the credential. It is what guarantees a daemon that is already running stops, independent of whether the teardown of the credential file succeeded.

A device in that state reports `off (killswitch set)` in the wizard summary and in `probe doctor`. The wizard will not silently override it.

## Three places a credential can come from

This is why "capture is off" needs checking rather than assuming.

| Source | Cleared by turning capture off? |
| - | - |
| The paired file | Yes |
| `PROBE_INGEST_TOKEN` in your environment | **No** — nothing can unset a variable in your parent shell |
| The Probe CLI config | Yes |

The wizard names an environment credential when it sees one, because clearing only the file would let capture resume at the next session start while the menu reported it as off.

```bash theme={null}
probe doctor        # "Credential from" says which one actually resolved
```

## Verifying it is really running

```bash theme={null}
probe session status
```

The response includes a `capture` block with the daemon's state and reason — so "tracking is on" and "a daemon is actually capturing" can be told apart.

> [!WARNING]
>
> **Working MCP tools do not prove capture is running.** On pi in particular, a settings file can carry the package without its extensions: skills and the MCP manifest load, the capture entrypoint does not, and tracking reads as on while no daemon ever spawns. `probe doctor` names that state explicitly.
>
> Worktrees are another case — a worktree misses the project-local settings that re-enable capture, and that re-enable is trust-gated per path.

## Capy threads

Capy runs its agent loop on Capy's servers, so no transcript is written on your machine and no plugin captures it, even for a thread on This Mac. Instead, your computer reads your threads through Capy's API, with your own Capy API key, and uploads each one as a session. The installer connects it when you pick Capy (or run `probe capy connect`); setup is on the [Capy](/agents/capy.md) page.

> **Sent**
>
> * Your prompts
> * The agent's replies
> * A one-line summary per tool call
> * Attachment names

> **Not sent**
>
> * Tool output
> * File contents and diffs
> * The model's reasoning

* **Only threads you start**, in the Capy projects you choose. A Capy key can read your teammates' threads too, and capturing those would need their consent. Messages a teammate adds to one of your threads are part of it, and are captured.
* **Every 10 minutes**, from a timer that `connect` installs: a systemd user timer on Linux, a launchd agent on macOS. Anywhere else it prints a crontab line for you to add. A computer that was off loses nothing: the next sync catches up. On Linux, user timers stop when you log out unless lingering is on (`loginctl enable-linger`), and `connect` tells you when it is off.
* **One thread is one session.** Each subagent is a session of its own, linked to its thread. A thread is finished after a day with no new messages, or when you archive it. A new message reopens it.

```bash theme={null}
probe capy status        # what is connected, and how the last sync went
probe capy sync          # sync now
probe capy disconnect    # remove the timer, the key, the sync record and the capture credential
```

Sessions already uploaded stay in Probe after `disconnect`.

**Signing out or uninstalling Probe disconnects Capy too.** The timer, the key, the sync record and the capture credential all go, so nothing keeps uploading after you sign out.

The killswitch works here as well: a `.disabled` file in Capy's capture folder stops every sync before it reads anything, until `probe capy connect` runs again. The wizard shows that state as `capture off (killswitch set)`.

## What happens to captured sessions

They become documents in the team knowledgebase, searchable by meaning alongside runs, notes and papers, and readable as entities through the MCP `transcript` view.

In the dashboard a session has its own page with its transcript and digest, and can be attributed to a run — which is what keeps "why was this launched" answerable months later.

A Claude Code session is named by the title Claude Code gave it (the terminal tab's title; a `/rename` wins), from capture tap 0.9.20. A session with no title yet, or from another agent, is named by its agent and start time.

Each agent's sessions carry their own document-type prefix (`claude_code.*`, `codex.*`, `pi.*`), and the bare token `session` spans all three.

## Importing history instead

Capture is live. To bring in transcripts you already have:

```bash theme={null}
probe backfill --transcripts-only
```

See [Import research work](/wizard/import.md).

## Removing captured data

Uninstalling a client does **not** delete anything already sent. Deletion is a dashboard and API operation against the stored documents, not a client-side one.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.