Repository navigation
[Feature]: Surface Claude Edit/Write before/after text in expanded tool entries #10970
Description
Activity
Triage
Confirmed on current
main. ClaudeEdit/Writeexpanded work-log rows show paths/summaries only; the tool input text never appears as a reviewable before/after.This is not a duplicate of #6388 (Bash output never renders). Same general “persisted tool payload doesn’t reach the expanded row” shape, different field and UI.
What the code does today
ClaudeAdapteralready attaches the full tool input onitem.started/item.updated/item.completed:data: { toolName, input } // input has file_path, old_string, new_string, content
There is no Claude
unifiedDiff/ before-after mapping. CodexunifiedDiffis turn-level (turn.diff.updated→ checkpoint placeholders), not per-edit.The drop happens in
projectActivityPayload(ActivityPayloadProjection.ts). For non-MCP tools it keepstoolNameand path-like keys asdata.files, and dropsdata.input.item.completedstill persists the full payload; the wire snapshot does not.The UI would not show it even if it survived: web (
session-logic.ts+MessagesTimeline.tsx) and mobile (threadActivity.ts) only attachtoolDataformcp_tool_call. Expanded file-change rows render command / detail /changedFiles.detailis a ~180-char JSON dump of the input, so it is a path prefix, not a before/after pair.collectChangedFilesalso misses Claude’s snake_casefile_path(path/filePathonly), so paths often survive only via that truncated detail.Not already in flight
No open PR implements this. Related but not a fix: #7184 (Bash output), #5482 (payload slimming), #9549 (expanded-row cleanup). Closed #5471 (rich transcript / inline diffs) is not a leftover close.
Suggested fix
Treat this as an accepted enhancement. Keep collapsed rows as they are. On expand, show a bounded verbatim before/after (plus a truncation flag) in the existing work-log row — no new surface, no Codex
unifiedDiffreuse.- Slim
file_changeinput to boundedold_string/new_string/content(and collectfile_path). - Render that pair in the existing expanded body on web and mobile.
- Add projection + UI fixtures. Happy to use reporter-provided fixtures for the bound.
Severity: medium UX gap. Type: enhancement.
- Slim
- addedenhancementRequested improvement or new capability.Requested improvement or new capability.acceptedfeature request acceptedfeature request acceptedvia-triageFiled through npx t3 triageFiled through npx t3 triage
on Sep 9, 2026 - locked and limited conversation to collaborators
on Oct 11, 2026
Summary
Expanded tool entries for Claude
Edit/Writecalls show file paths but never the changed text — no before/after and no diff. Codex turns already surfaceunifiedDiffdata; the Claude path has no equivalent, so reviewing what an edit actually changed requires leaving T3 or re-reading the file.Current behavior
old_string/new_string/content) never reaches the UI in any form.main: a code search shows noold_string/new_string/unifiedDiffhandling inClaudeAdapter.ts—unifiedDiffexists only around the Codex/checkpoint paths, which is a different mechanism (turn-level summaries, not per-edit before/after).Expected behavior
Repro
A per-field bound keeps this consistent with the recent payload-slimming direction. Happy to provide fixtures or help validate a bounded-payload design.