Uh oh!
There was an error while loading. Please reload this page.
fix(ui): grey subagent tool calls and soften failure copy - #4457
Conversation
The latest updates on your projects. Learn more about Vercel for GitHub. |
PR SummaryLow Risk Overview Tool-call display copy is softened for error states: Reviewed by Cursor Bugbot for commit 152e39b. Bugbot is set up for automated code reviews on this repo. Configure here. |
Greptile SummaryThis PR makes two small UI polish fixes for subagent tool-call rows: all rows are faded to 60% opacity to visually match the surrounding dimmed subagent text, and the user-facing error label is softened from "Failed" to "Attempted to".
Confidence Score: 4/5Safe to merge — changes are purely visual and copy-only with no logic or data impact. Both changes are narrow in scope. The opacity tweak dims all tool-call rows uniformly, including the live spinner during the executing state, which may slightly reduce the visibility of in-progress operations. The "Attempted to" copy lands a bit awkwardly for tool names that don't begin with a verb (e.g. "Attempted to File Context"), but this is a pre-existing structural quirk of the fallback formatter rather than a regression.
Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[resolveToolDisplay] --> B{toolName defined?}
B -- No --> Z[undefined]
B -- Yes --> C{isToolHiddenInUi?}
C -- Yes --> Z
C -- No --> D{specialToolDisplay?}
D -- respond/respond suffix --> E[formatRespondLabel 'Gathering thoughts']
D -- Read tool --> F[formatReadingLabel]
F --> F1{state}
F1 -- success --> F2[Read suffix]
F1 -- error --> F3[Attempted to read suffix]
F1 -- rejected/aborted --> F4[Skipped reading suffix]
F1 -- default --> F5[Reading suffix]
D -- other --> G[humanizedFallback]
G --> G1{state}
G1 -- success --> G2[Executed FormattedName]
G1 -- error --> G3[Attempted to FormattedName]
G1 -- rejected/aborted --> G4[Skipped FormattedName]
G1 -- default --> G5[Executing FormattedName]
|
| return ( | ||
| <div className='flex items-center gap-[8px] pl-[24px]'> | ||
| <div className='flex items-center gap-[8px] pl-[24px] opacity-60'> |
There was a problem hiding this comment.
Opacity applied during active execution
opacity-60 is unconditional, so the animated PillsRing spinner shown while status === 'executing' is also dimmed to 60%. In practice this may be subtle, but the in-progress indicator is the most important visual affordance when a subagent is working — users may miss that a tool call is still running. Consider limiting the fade to completed states (success, cancelled, error) and keeping the executing row at full opacity.
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit eda7304. Configure here.
Uh oh!
There was an error while loading. Please reload this page.

Summary
opacity-60to subagent tool-call rows so they fade to match the surrounding subagent text (previously text was greyed but tool calls stayed full-opacity).Failed reading X→Attempted to read X, and humanized fallbackFailed Foo Bar→Attempted to Foo Bar.Type of Change
Testing
Tested manually.
bun run lintandbun run check:api-validation:strictpass.Checklist