TL;DR: Claude got quieter (reasoning + tool traces). Devs lost breadcrumbs (“what did it touch?”).

Fix: Add receipts. AGENTS.md + a hook that logs git diff --name-only and git status --porcelain.

(Ctrl+O to expand the context — Ctrl+O = Claude Code “expand details”, not your browser.)


The Squeeze: Two Kinds of Quiet

1. The Thinking Got Summarized

Feb 2025: Anthropic shipped Claude 3.7 Sonnet with visible extended thinking. You could watch raw reasoning in real-time—the model giving “itself more time” to reach an answer.

2026: Newer Claude generations summarize long thought processes. The chain-of-thought is still there. You just get the digest by default.

Anthropic noted the tradeoff early: visible thinking may not reflect “what’s going on in the model’s mind.” Safety concerns followed—chains could be exploited for jailbreaks.

2. The Tools Got Collapsed

Claude Code used to stream every file read:

Read: src/auth/handlers.ts (234 lines)
Read: src/auth/types.ts (45 lines)
Glob: **/*.config.ts (3 matches)

Now you get:

Read 3 files  [Details: Ctrl+O]

Same information. One more keystroke. Multiply by a hundred tool calls per session.

HN user yoshiyosh captured the dev frustration:

“I don’t want verbose mode. I want Claude to tell me what it’s reading in the first 3 seconds, so I can switch gears without fear it’s going to the wrong part of the codebase.”

Boris from the Claude Code team responded: as agents run longer (“minutes, hours, days”), output overwhelms. Progressive disclosure works for most. But they “missed the mark for a subset.”


War Stories

The wrong search: Agent searched billing but never touched invoice. With visible search patterns, you catch this in 10 seconds. Without them, you find out after the refactor.

The wrong directory: Agent read packages/api/ when the fix needed apps/web/. File paths in the stream = drift you can redirect early.

The sensitive touch: Agent touched .env.example. You need to know now, not in the git diff later.

Without breadcrumbs, you’re supervising blind.


Fair Version

Terminal noise is real. A busy session generates hundreds of tool calls.

Progressive disclosure isn’t evil—it’s a legitimate UX tradeoff.

Anthropic’s post framed the tradeoff: visible thinking helps trust research, but poses “safety concerns.” Future releases would weigh the “pros and cons” of transparency.

The quieter UI wasn’t a conspiracy. It was a weighted decision.


The Fix: Audit Ledger (AGENTS.md)

If you’re new to AGENTS.md, start with the practical guide first. This pattern extends that foundation.

One file. Three parts. Run ledger + provenance + audit trail in one system.

Part 1: The Ledger Section

Add to your AGENTS.md:

1
2
3
4
5
6
7
8
## Audit Ledger

### 2026-02-17T12:34:56Z
Goal: Refactor auth middleware
Touched: src/auth/handlers.ts, src/auth/types.ts
Status: complete
Sensitive: none
Notes: Extracted JWT logic to separate module

Part 2: The Hook (Read-Only, Strict)

Read-only hook: runs git status/diff and appends to AGENTS.md. Strict mode prevents partial writes. No-op in non-git dirs. Always logs—even “(none)” or “(clean)"—so you know the agent ran.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/env bash
set -euo pipefail

# Read-only hook: runs git status/diff and appends to AGENTS.md.
# Guard: skip if not in a git repo.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
  exit 0
fi

LEDGER="AGENTS.md"
TS="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"

touched="$(git diff --name-only || true)"
status="$(git status --porcelain || true)"

{
  echo
  echo "## ${TS}"
  echo "Touched (git diff --name-only):"
  if [ -n "${touched}" ]; then
    echo "${touched}" | sed 's/^/- /'
  else
    echo "- (none)"
  fi

  echo
  echo "Status (git status --porcelain):"
  if [ -n "${status}" ]; then
    echo "${status}" | sed 's/^/- /'
  else
    echo "- (clean)"
  fi

  echo
  echo "Goal: TODO(one line)"
  echo "Notes: TODO(one line)"
  echo "Sensitive: none (TODO)"
} >> "${LEDGER}"

Save to ~/.claude/hooks/audit-ledger.sh, make executable, enable via /hooks in Claude Code. See Hooks Guide for event types and configuration.

Part 3: One Prompt Rule

Add to your CLAUDE.md:

1
2
3
## Audit Rule
After every task: update AGENTS.md Audit Ledger with Goal + Notes.
The hook auto-logs touched files. I review before commit.

Done. You’ve rebuilt observability without fighting the UI.


Spoke-and-Wheel: Where This Fits

Hub: /agents/agents-md/ — Templates and conventions for agent guidance files

Spokes:

Operational context: This site’s own AGENTS.md defines content taxonomy and conventions. The Audit Ledger pattern extends that foundation with runtime observability.



Last reviewed: 2026-02-17 Evidence level: High (vendor documentation, community reports, tested hook script)