claude-devtools

claude --verbose vs claude-devtools

Both surface the data Claude Code's terminal hides. --verbose dumps a raw JSON stream live; claude-devtools renders the same data as a structured, navigable, searchable interface after the fact.

Since v2.1.20, Claude Code's terminal hides most of what it actually does — file paths, diffs, regex patterns, thinking content. There are two ways to get that detail back: the built-in --verbose flag, and claude-devtools. Both read the same underlying session data. The difference is in how that data is presented.

claude --verbose prints the raw event stream as it happens. Every JSON message — user turn, assistant response, tool call, tool result, system event — is dumped to stdout, one per line, including internal system prompts and embedded metadata.

claude-devtools reads the same JSONL transcripts after they're written to ~/.claude/, and renders them as a structured conversation with per-tool viewers, navigable history, and search.

Source of data: --verbose is a live stdout stream during the run. claude-devtools reads ~/.claude/ JSONL files after Claude Code writes them — every session you've ever run is available.

Format: --verbose is raw JSON, one line per event, with system prompts and metadata included. claude-devtools renders a chronological conversation with tool-specific viewers — Read calls become syntax-highlighted code, Edit calls become inline diffs, Bash calls render terminal output.

Tool calls: --verbose shows escaped JSON for both inputs and outputs. claude-devtools shows formatted inputs and specialized output renderers per tool.

Thinking content: Both surface it, but claude-devtools makes thinking collapsible per turn so you can scan a session quickly.

Past sessions: --verbose is ephemeral — once stdout is gone, it's gone. claude-devtools indexes every transcript on disk and lets you navigate any of them.

Search: --verbose requires piping to grep or jq. claude-devtools provides cross-session Cmd+K search across every transcript.

Subagents: --verbose interleaves subagent events into the main stream. claude-devtools renders each subagent as its own recursive execution tree with tool traces and metrics.

Token attribution: --verbose shows raw usage fields per response. claude-devtools breaks down per-turn usage across 7 categories — CLAUDE.md, skills, @-mentioned files, tool I/O, thinking, team overhead, user text.

Compaction events: --verbose shows a JSON marker. claude-devtools visualizes the boundary, the token delta before/after, and what was compressed away.

When --verbose is the right tool:

  • You need the live event stream while a session runs (e.g. for piping into another tool)
  • You're writing custom log processors and want the canonical data
  • You need to confirm an event happened now, not after the fact

When claude-devtools is the right tool:

  • You're trying to figure out what went wrong in a session that already finished
  • You need to compare what Claude was thinking vs. what it actually did
  • You want to inspect a subagent's full execution tree without losing your place
  • You're auditing token cost or compaction across many sessions
  • You want to do any of the above on a remote machine over SSH

The two are not mutually exclusive. --verbose is useful for live, scripted access; claude-devtools is the post-hoc debugger.

Star on GitHub

On this page