Capturing Command Output
Atuin can store what each command printed next to its history entry. You can then read it back in the inspector UI, search across it with atuin output search, and let Atuin AI or other AI tools read what a command actually did.
Output capture is off by default. It needs pty-proxy, which sees what your terminal displays, and the daemon, which stores it.
Setting it up
This turns on the daemon (with autostart) if it isn't on already, enables pty-proxy and [output], and restarts the daemon. Open a new shell afterward.
To do the same by hand, add to your config file:
If you manage the daemon yourself (systemd, launchd), restart it after changing [output]. See [pty_proxy] for other ways to start pty-proxy.
Reading captured output
In the search UI
Press Ctrl+O in search to open the inspector, pick a run, and press Enter (or O) to open its output. Colours and formatting are kept.
From the command line
atuin output search searches the output of every captured command:
From AI tools
- Atuin AI reads a command's output when you ask it why something failed.
- Claude Code, Cursor, and other agents can read and search it through Atuin's MCP server.
What gets captured
Atuin stores the output as your terminal displayed it at the end of the command. If you had progress bars on similar animated effects, only the "last frame" is recorded.
Some output is never stored:
- Full-screen programs such as
vim,less, andhtop. Anything drawn on the terminal's alternate screen is skipped. - Commands Atuin doesn't record. Output belongs to a history entry, so a command typed with a leading space, one excluded by
history_filterorcwd_filter, or a failing command withstore_failed = falsehas none. - Commands in
command_filter. These stay in your history; only their output is dropped. - Atuin's own credential commands:
atuin key,atuin login,atuin register, andatuin account change-password.
When a command prints more than max_output_size (1MB by default), Atuin keeps the start and the end, half each, and drops the middle, recording that it's missing.
Privacy
- Recognised credentials in the output (API keys, tokens, and the like) are replaced with
****before storage, whilesecrets_filteris on (the default). This is best-effort: it only knows common formats, and misses a credential that colour codes split apart. - For a command that prints secrets, don't rely on redaction: add it to
command_filterto keep it in your history but never store its output. See Excluding commands. - Captured output stays on your machine. It isn't synced, even with sync set up. We're actively working on supporting this.
- Atuin AI only sends output to the LLM when it asks for a specific command's output, and asks your permission first by default. See Reading Command Output.
Storage and retention
Output is stored on disk in the output-capture directory of Atuin's data directory (~/.local/share/atuin/output-capture by default), so it survives daemon restarts. Don't edit that directory by hand.
- Disk budget. Output may use up to
max_disk_usage, 10% of the disk by default. The daemon checks about once a minute; past 95% of the budget, it deletes the oldest output until usage is back to 90%. - Deleting history deletes output. Deleting an entry from the search UI, with
atuin search --delete,atuin history prune, oratuin history dedupalso deletes its output. - Turning it off. Set
[output] enabled = false. The daemon stops storing output right away; open a new shell so pty-proxy stops capturing it too. Output already stored stays on disk; to remove it, stop the daemon and delete theoutput-capturedirectory.
When changes take effect
| Setting | Takes effect |
|---|---|
command_filter | On the next command; the daemon reloads its config by itself |
enabled = false | At once for storage; in a new shell for capturing |
enabled = true, max_disk_usage | After atuin daemon restart and a new shell |
max_output_size | In a new shell, when pty-proxy starts |
All settings are listed in the configuration reference.