[FEATURE] Mods: no way to put effort on a key without /effort rows in the transcript
Related: #61904 (Chat-context effort actions). This issue is about the gap on the mods side: even with a mod, effort can't be put on a key without filling the transcript.
Problem
There is no keybinding action that changes the effort level from the prompt. The only effort actions are effortSlider:increaseEffort / effortSlider:decreaseEffort, and they work only inside the slider that /effort opens.
The only way to put effort on a key today is a workaround:
- A plugin registers one command per level (
/effort-low…/effort-max), becausecommand:bindings accept a bare name only (^command:[a-zA-Z0-9:\-_]+$), with no arguments. keybindings.jsonbindsctrl+1…ctrl+5tocommand:effort-low…command:effort-max.- Each of those commands runs
/effort <level>through$.command.run.
It works, but every key press leaves two rows in the transcript:
› /effort high
⎿ Set effort level to high (saved as your default for new sessions): Comprehensive implementation …
Switching a few times while working fills the transcript with these rows. A mod can't hide or restyle them: in my testing the rows don't go through CommandOutput or any other ui.render site (I logged every ui.render call while switching). /config has no effort row either, so $.config.set isn't an option.
Proposal
Any one of these would solve it:
- Chat-context keybinding actions for effort (as in #61904):
chat:cycleEffort,chat:increaseEffort,chat:decreaseEffort, and ideally one per level (chat:effortLow…chat:effortMax). They would act likechat:cycleModedoes for permission modes: change the level in place, with no transcript row. - Arguments in
command:bindings, for example"ctrl+3": "command:effort high", so the built-in command can be bound directly. - For mods: a way to set the session's effort, such as an
effortrow in/configor a$method, or raisingCommandOutputfor built-in local commands like/effort, so a mod can fold those rows.
Why it matters
Effort is something I change several times per session, like the permission mode. The permission mode has shift+tab and a label in the footer. Effort has neither, unless you build the workaround above and accept the transcript noise.
Environment
- Claude Code 2.1.287
- macOS, Ghostty