Agent pane: name a harness's own tools by what they do
Leo, 2026-11-03, on a "ScheduleWakeup ⌄" row: "instead of this kind of thing and SendMessage, we can just... make it look better? Scheduled Wakeup, sending message (like the sendmessage command is different from sent...)"
Claude Code's own tools that have no file, command or MCP server to name them drew their raw CamelCase names. toolLabel (toolPaths.ts) now names them by what they do, with a running form while the call runs and a done form after (harnessToolLabels.ts):
| Tool | Running | Done |
|---|---|---|
| ScheduleWakeup | Scheduling a wakeup | Scheduled a wakeup |
| SendMessage | Sending a message | Sent a message |
| TaskStop | Stopping a task | Stopped a task |
| TaskOutput | Reading a task's output | Read a task's output |
| CronCreate / CronDelete / CronList | Scheduling a job / Removing a scheduled job / Listing scheduled jobs | Scheduled… / Removed… / Listed… |
| ListAgents | Listing agents | Listed agents |
| Monitor | Watching for events | Watched for events |
| PushNotification | Sending a notification | Sent a notification |
| EnterWorktree / ExitWorktree | Entering / Leaving a worktree | Entered / Left a worktree |
ToolSearch already draws no row (hiddenTools.ts). A SendMessage whose input parses still draws its own sent-message row; this covers the call before that, and the live line. Strings are in all 21 pane languages (English translated, the rest needs_review).
Command: cd webviews && bun test test/tool-label-harness-tools.test.ts. Base: 2 fail ("every known harness tool…", "the tools Leo named…"). Head: 4 pass. The test fails on any tool in the known list that falls back to its raw name or to a missing string key.
Observed / Not run
Observed: the test above red on base and green here, plus 68 pass across the transcript-density, write-row label, row-estimate and summary tests; web lint (fast) and the prepush gate passed. The fleet bun run check was running when I opened this PR.
Not run: an in-app capture. No capture: a label-only change that the unit test covers.
Changelog
Changed: Agent chat names Claude's scheduling, messaging, task and worktree tools by what they do ("Scheduled a wakeup") instead of their raw names.
Agent session: agent session
🤖 Generated with Claude Code
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Labels Claude Code's own harness tools (ScheduleWakeup, SendMessage, TaskStop, and the rest) by what they do instead of their raw CamelCase names. Calls now read as "Scheduling a wakeup" while running and "Scheduled a wakeup" once done; the strings are added in all 21 pane languages (English translated, the rest marked for review). File, command, and MCP tools keep their existing labels.