Captured entries

September 21, 2026 · View on GitHub

The files listed here were not copied from anywhere. Each one was pulled off the wire on a real machine by OrcaReplay's local proxy while the harness ran unmodified, then scrubbed and written out. The last column is the command that produces it again: clone OrcaReplay, run it, diff the result against the file here.

chars is the character count of the file as committed. Check any row with:

node -e "console.log(require('fs').readFileSync(process.argv[1],'utf8').length)" <file>

The prompt as sent is a few hundred characters longer in most rows, because the scrubber's placeholders ({{HOME}}, {{GIT_USER}}, {{PROJECT_SLUG}}, …) are shorter than the paths and names they replace.

Claude Code

modelmodecapturedcharstoolsfileregenerate
claude-fable-5-1interactive (cc_entrypoint=cli)2026-09-0226,13135prompt · toolsnode capture/capture.mjs claude --model claude-fable-5-1
claude-fable-5-1print / Agent SDK (sdk-cli)2026-09-0220,80629prompt · toolsnode capture/capture.mjs claude --model claude-fable-5-1 --print
claude-opus-4-8interactive2026-09-0218,67233prompt · toolsnode capture/capture.mjs claude --model claude-opus-4-8
claude-opus-5interactive2026-09-0322,95035prompt · toolsnode capture/capture.mjs claude --model claude-opus-5

Harness version rides in the first line of each file: cc_version=2.1.258.18d for the first three, 2.1.259.23b for Opus 5. The working directory is part of this prompt — a capture taken outside a git repository loses the whole gitStatus block, about 4 KB on a measured run.

Codex CLI

modelmodecapturedcharstoolsfileregenerate
gpt-5.6-lunacodex exec2026-09-0220,8153prompt · toolsnode capture/capture.mjs codex --model gpt-5.6-luna
gpt-5.6-solcodex exec2026-09-0323,3549prompt · toolsnode capture/capture.mjs codex --model gpt-5.6-sol
gpt-6-astracodex exec2026-09-0521,261promptnode capture/capture.mjs codex --model gpt-6-astra

Codex groups its tools into namespaced containers, so the JSON is an array of two entries holding nine tools rather than nine entries. The count in the table is the tool count.

Other coding harnesses

harnessmodelmodecapturedcharstoolsfileregenerate
Qwen Codegpt-5.6-sol-p2026-09-0328,26623prompt · toolsnode capture/capture.mjs qwen --model gpt-5.6-sol --dir qwen-gpt-5.6-sol
Cursorgrok-4.5-high-p2026-09-031,9555 ‡promptORCA_BIN=packages/cli/dist/cli.js node capture/capture.mjs cursor
MiMoCodemimo-v2.5run2026-09-0450,40016prompt · toolsnode capture/capture.mjs mimo --model mimo-v2.5
MiMoCodemimo-v2.5-prorun2026-09-0450,400 §16 §(same files)node capture/capture.mjs mimo --model mimo-v2.5-pro
Hermesnemotron-3.5-lightning-free-z2026-09-0414,04919prompt · toolsnode capture/capture.mjs hermes --model nemotron-3.5-lightning-free
Kilo Codekilo-auto (free) †run2026-09-0511,32213promptnode capture/capture.mjs kilo
MiniMax Codedeepseek-v4-flash-freeexec (tui)2026-09-2014,67518prompt · toolsnode capture/capture.mjs mcode --model deepseek/deepseek-v4-flash-free --prompt-mode tui --allow-failed
MiniMax Codedeepseek-v4-flash-freeexec --prompt-mode coding2026-09-2016,05518prompt · (same tools)node capture/capture.mjs mcode --model deepseek/deepseek-v4-flash-free --prompt-mode coding --allow-failed
MiniMax Codedeepseek-v4-flash-freeexec --prompt-mode work2026-09-2017,61918prompt · (same tools)node capture/capture.mjs mcode --model deepseek/deepseek-v4-flash-free --prompt-mode work --allow-failed
Crushdeepseek-v4.1-flashnon-interactive2026-09-1828,839 ◇26promptrunbook
Gemini CLIgemini-3.5-flashnon-interactive2026-09-1725,0508promptrunbook
OpenClawgpt-5.6-solagent exec2026-09-1721,63038promptrunbook
goosedeepseek-v4.1-flashnon-interactive2026-09-189,76818promptrunbook
dshdeepseek-flashnon-interactive2026-09-174,65625promptrunbook
Clinegpt-4o-mininon-interactive2026-09-174,25125promptrunbook
pigpt-4o-mininon-interactive2026-09-172,6104promptrunbook
HackerAIgpt-4o-mininon-interactive ✧2026-09-171,6890promptrunbook
Aiderdeepseek-v4.1-flashnon-interactive2026-09-181,1550promptrunbook

OpenCode

One harness, seven models, three templates. The five free rows differ from each other in exactly one line — You are powered by the model named … — and send a byte-identical tool set, which is why they share one opencode-tools.json.

modelcapturedcharstoolsfile
big-pickle2026-09-029,62211prompt · tools
ling-3.0-flash-fin-free2026-09-029,64811prompt · tools
mimo-v2.5-free2026-09-039,63011prompt · tools
nemotron-3-ultra-free2026-09-029,64411prompt · tools
nemotron-3.5-lightning-free2026-09-029,65611prompt · tools
muse-spark-1.2-contributor-free2026-09-0210,25011prompt · tools
gpt-5.6-sol2026-09-0210,3349prompt · tools

Regenerate any of them with node capture/capture.mjs opencode --model <id>. OpenCode keeps its provider origin in opencode.json rather than an environment variable, so it cannot be redirected: the capture uses --tls-intercept to terminate the TLS OpenCode established itself, and leaves its config untouched.

Footnotes

¶ The model is not the variable for MiniMax Code. Seven models across six labs, on two gateways, produced 119 identical lines each — the only difference was - Model: <id> — and the tool set never moved. Its prompts are Handlebars templates shipped inside the package, and none of their conditionals branches on a model or a provider. These three rows are also the BYOK shape: a signed-in run carries a further 3,381-character # Memory section that a bring-your-own-key run has forced off. See MiniMax-Code/README.md.

No capture.mjs profile. These nine were taken before their harness had one, by running the agent under orca record with its provider base URL moved to the proxy and reading the system prompt out of the request — the route the capture runbook describes. capture.mjs <harness> answers unknown harness for every one of them, and writing profiles is the follow-up that turns these rows into one-liners. Everything else about them is an ordinary capture: same scrubber, same audit, same char counts measured the same way.

HackerAI's CLI has no non-interactive entry point, so this turn was driven through the package's own Agent class. The prompt is the product's — the shim calls agent.run and discards the answer. Aider and HackerAI both show zero tools because neither drives edits through tool calls; the column is the product, not a truncated capture.

29,335 characters as sent. This is the one capture here that needed re-scrubbing before it could be published: it was taken on 2026-09-18, before OrcaReplay's scrubber matched a Windows path written with forward slashes, so eight <location> lines carried a home directory and two account uuids past the audit meant to stop exactly that. Re-scrubbed and re-audited against home paths, usernames, emails, uuids, long hex, key shapes, IPs and gateway hosts.

Not in OrcaReplay's own capture index, so no tool schema was kept and the regenerate command is the harness's standard form rather than a recorded one. Kilo's is exact all the same — its capture profile defaults to kilo/kilo-auto/free, so the bare command picks that model. Tool count for the Kilo row comes from OrcaReplay's capture notes; the Astra row has none to report. Both prompts are as captured.

Cursor declares no tool schemas on the wire. Its prompt is composed server-side and arrives in the response, not the request; two meta-tools are described in prose and the rest are named in an XML attribute, so five is the honest count rather than a missing one. A further 19 KB of environment, rules, skills and tool namespaces travels in the user turn and is not part of this file.

§ mimo-v2.5 and mimo-v2.5-pro send byte-identical prompts and tool sets, so one file serves both rows. The tier changes the model behind the request and nothing about the request.

What is not here

  • Request bodies and raw traces. They carry session, message, account and device ids. OrcaReplay keeps them local by design and so do we.
  • Anything a chat product injects server-side. claude.ai, ChatGPT and Gemini never send their prompt from your machine; a proxy cannot see what never crosses it. Those entries live in the archive as reported, not captured.
  • Named Cursor models. Only auto could be captured on the account used; every named model answers resource_exhausted.