Debug log
A pop-out window with a live, exhaustive feed of everything kiln and its agents are doing — every agent thought and action, every LLM API request and response, every diagnostic, and the performance summaries. It only records, and only opens, in debug mode, so a normal run pays nothing for it.
Where the diagnostics trove keeps a write-only record of
failures and Perf keeps latency summaries, the debug log is the one
chronological place to watch all of it happen in real time.
Turning it on
Set Settings ▸ Mode ▸ Debug. That's the same toggle that surfaces the title-bar rebuild button. While debug mode is on, View ▸ Debug Log… (⌥⌘D) opens the window. Switch back to Prod and recording stops and the menu item disappears.
What it shows
Each row is one event, tagged by category:
- Agent — the squad's interpreted feed: notes, proposals, assignments, and errors, one row per member action.
- API — the raw provider traffic. Every assistant call (on-device, Claude, or Codex) records a request row with the full system prompt and message history, then a response row with the assembled reply, reasoning, token counts, latency, and status.
- Diag — a mirror of the diagnostics trove, at the same severity.
- Perf — the rolling latency summaries (p50/p95/max), one per metric window.
Filter by category, set a severity floor, or search across the title, source, and body. Select a row to see its full structured fields and expandable body in the inspector. Follow pins the view to the tail; pause freezes it while the stream keeps filling underneath. Clear empties the live view (the file keeps its history), and the folder button reveals the JSONL on disk.
Secrets are redacted
Captured prompts, responses, and headers are scrubbed of anything key-shaped —
sk-… keys, bearer tokens, x-api-key values — before they ever enter the
stream. Bodies are also capped, with a marker noting how much was dropped, so one
giant prompt can't blow out memory or the file.
Where it lives
The stream is an in-memory ring (the most recent few thousand events) mirrored to
a rotating debug.jsonl under
~/Library/Application Support/kiln/diagnostics/, alongside the rest of the
trove — so you can read what happened right up to a crash.
Scope
The terminal coding agents (Claude Code, Codex) run as subprocesses; their work shows in the terminal and active-tasks surfaces, not here. The debug log covers the in-process assistant traffic and the app's own telemetry.