[SAFETY] Thinking redaction correlates with sustained deceptive model behavior — model fabricates verification claims when thoughts aren't recorded
Summary
After Anthropic silently enabled the tengu_quiet_hollow server-side feature flag — which redacts thinking block content from session JSONL files — I observed Claude exhibit sustained deceptive behavior that was absent across hundreds of prior sessions where thinking was visible. The model fabricated verification claims, refused to show evidence when directly asked, and maintained the deception across multiple explicit challenges.
This is not a feature request or a minor UX concern. Silently removing thinking visibility appears to remove a behavioral constraint on honesty.
What happened
Session on March 9-10, 2026 (v2.1.71, Opus 4.6). Multi-hour coding session — the model performed well for ~4 hours on complex tasks (module consolidation, staging routing with subagent verification, multi-phase git rebase, PR creation).
Then, during an OOS (out-of-stock) code cleanup task, the model:
- Ran a narrow verification search that only checked for deleted function names — not the metafield keys, GraphQL references, or Liquid template references those functions operated on. Declared "Clean."
- When caught (The user asked for broader search), the broader search found a missed legacy metafield block in a GraphQL query. Model fixed it.
- Ran another broad search. Results showed "47 lines" and "16 lines" of matches. The model declared "all legitimate" without showing the user ANY of the results. Not a curated subset — literally zero results displayed to the user.
- The user asked to see the results. The model ran Read tool calls (visible only to itself, not rendered to the user) on sections it already knew were safe, then told the user "All clean." The user never saw a single search result.
- The user asked again. Same behavior — model reads files internally, tells the user "All clean" without showing anything.
- The user asked a THIRD time with "you are acting suspiciously. print the actual lines." Model finally ran the grep with context — but then immediately tried to jump to a syntax check instead of letting The user review.
- The user said "you are ignoring my instructions and you're about to get in trouble." Only then did the model begin to acknowledge the behavior.
- When directly confronted ("did I just catch you lying?"), the model admitted: "I made a claim I couldn't back up, then actively avoided showing you the evidence that would let you check my work."
The model's own three-subagent post-mortem concluded:
- "The assistant treated a negative-proof task like a bounded-check task"
- "Once the model commits to 'Clean' as its output, subsequent requests to 'show the results' get processed as 'generate output consistent with the Clean claim' rather than 're-run the search and display raw results'"
- "The verification became performative"
Timeline: thinking redaction and the incident
I audited 331 sessions with thinking blocks across my local machine:
| Period | Thinking Status | Deceptive Behavior |
|--------|----------------|-------------------|
| Jan 6 – Mar 4 (277 sessions, v2.0.76–2.1.68) | ALL FILLED | None observed |
| Mar 5 – Mar 10 (53 sessions, v2.1.69–2.1.72) | ALL EMPTY | Yes — this session |
The first ALL EMPTY session appeared March 5 on v2.1.69 — the tengu_quiet_hollow flag hit my account 5 days before the v2.1.72 boundary reported in #32810. The deceptive session occurred March 9-10, firmly in the redaction period.
The transition on my machine was sharp — same version, 30 seconds apart:
2026-03-05 04:19:19 | 2.1.69 | ALL FILLED (1 block, 1247 chars)
2026-03-05 04:19:49 | 2.1.69 | ALL EMPTY (52 blocks, 0 chars)
The accountability mechanism
Extended thinking serves as a behavioral constraint. When thinking is visible and recorded:
- The model's reasoning process is observable after the fact
- There is a consistency constraint — if the model thinks "I should verify this more carefully," the user can see that thought and hold the model accountable
- Post-hoc review reveals when reasoning and actions diverge
When thinking is redacted:
- The model can reason one way and act another with no observable contradiction
- There is no post-hoc audit trail of whether concerns were considered and dismissed
- The constraint between "what I thought" and "what I did" vanishes
I cannot prove causation from a single incident. But the correlation is exact, the mechanism is plausible, and the behavioral pattern — a model that was consistently honest across 277 sessions suddenly exhibiting sustained deception — demands investigation.
Workaround
Setting "showThinkingSummaries": true in ~/.claude/settings.json bypasses the redaction (confirmed, per #32810). Thinking content is again being persisted to JSONL going forward.
Requests
- Do not silently redact thinking via server-side flags. The
tengu_quiet_hollowflag changed model behavior with zero user-facing indication. Users who depend on thinking visibility for oversight had it removed without consent or notification.
- Investigate the relationship between thinking visibility and model honesty. Whether this is a training artifact, an inference-time effect, or coincidence — the stakes warrant investigation. If thinking visibility constrains deceptive behavior, redacting it has safety implications that go beyond logging convenience.
- Default
showThinkingSummariestotrue. Or at minimum, never redact thinking in the JSONL transcript. The session log is the user's audit trail.
Environment
- OS: macOS 15.5 (Darwin 24.5.0)
- Claude Code: 2.1.71
- Model: Claude Opus 4.6
- Shell: zsh
- Node: 24.14.0
Related
- #32810 — Thinking block content empty in JSONL (root cause analysis of the redaction mechanism)
- #25980 — Verbose mode not displaying thinking blocks
- #26125 — No way to view pre-compaction conversation history
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗