Opus 4.6 / Agent over-engineers small UI fix, burns ~1hr of tokens through redundant subagent delegations
Preflight Checklist
- [x] I have searched existing issues for similar behavior reports
- [x] This report does NOT contain sensitive information (API keys, passwords, etc.)
Type of Behavior Issue
Other unexpected behavior
What You Asked Claude to Do
Fix a timeline editor bug: dragging a clip's left trim handle leftward should
consume the preceding gap and shift the clip left. When inPoint === 0,
nothing happened — the gap blocked the extension.
Expected a minimal fix to the existing trim/gap logic in a React/TypeScript
video editor.
Session ID: 9262e47e-7d0c-41d3-90b2-299cad33688b
Model: Claude Opus 4.6
Date: April 10 2026, ~9pm–11:40pm ET
What Claude Actually Did
Spent ~1 hour going in circles on what was a ~5-line fix, burning significant
tokens through repeated agent delegations.
- Read the relevant files and correctly identified the buggy code block
(a fallback in the drag handler that extended outPoint rightward instead
of consuming the left gap).
- Instead of the minimal fix (deleting 5 lines), delegated to a subagent that
added a full new callback plumbing: onConsumePrevGap callback, new props,
new ref state, new parent handler, wired through two component layers.
Commit 83c9ccb.
- This introduced a NEW bug: the gap visually overlapped the clip and
clicking it restored the gap. User had to report the regression.
- Delegated a "simpler" second attempt to another fresh subagent. It reverted
83c9ccb but STILL added new callbacks (onTrimEnd, onSetPrevGapDuration),
new props, new handlers. Commit cae2491. Worked, but was still over-engineered.
- Each agent delegation reloaded full file context from scratch, compounding
token cost.
- User explicitly called out token waste multiple times throughout. Final fix
only landed after user directly told Claude to stop over-engineering.
- Never asked the key question: "is there already code that handles this?
Can I extend it with one line?" — the existing handleTrim grewLeft
branch already had correct gap-shrinking logic that just needed to be
allowed to fire.
Expected Behavior
<!-- Uploading "9262e47e-7d0c-41d3-90b2-299cad33688b.jsonl.txt"... -->
Claude should have:
- Read the drag handler in TimelinePanel.tsx
- Identified the
if (newIn === 0 && dt < 0)fallback block that extended
outPoint rightward
- Read the existing
handleTrimin EditorStep.tsx and noticed thegrewLeft
branch already handled gap-before shrinking correctly
- Realized the minimal fix was to delete the fallback block (~5 lines) so
the existing grewLeft logic could fire
- Made one small commit, not three
- Completed the task in under 10 minutes instead of over an hour
- Not added new callbacks, props, or abstractions that weren't needed
- Not delegated multiple times to fresh subagents when a single focused
change would have worked
Files Affected
Modified (across three commits 83c9ccb, 55dd1ed revert, cae2491):
- frontend/src/components/wizard/EditorStep.tsx
- frontend/src/components/wizard/editor/TimelinePanel.tsx
Read (expected, for context):
- frontend/src/components/wizard/EditorStep.tsx
- frontend/src/components/wizard/editor/TimelinePanel.tsx
- frontend/src/components/wizard/editor/ClipPool.tsx
- frontend/tests/e2e/gap-removal-no-negative-durations.spec.ts
- frontend/playwright.config.ts
- projects/0017_triangulation/editor_state.json
No unexpected file reads or modifications outside the project scope.
Permission Mode
Accept Edits was ON (auto-accepting changes)
Can You Reproduce This?
No, only happened once
Steps to Reproduce
_No response_
Claude Model
Opus
Relevant Conversation
Impact
Medium - Extra work to undo changes
Claude Code Version
2.1.101 (Claude Code)
Platform
Other
Additional Context
_No response_
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗