[BUG] `voice:pushToTalk` multi-binding silently picks one key; the chosen key changed in v2.1.141
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
When multiple keys are bound to voice:pushToTalk in ~/.claude/keybindings.json, only one of them is ever active — the rest are silently ignored. Which key is selected changed in v2.1.141:
- v2.1.140 and earlier: the first key listed in the config object is active.
- v2.1.141 and later: the last key listed is active.
The docs (Voice dictation) imply multiple keys can be active at the same time ("Omit it if you want both keys active"), which does not hold in practice.
Additionally, binding only alt+v (without setting space: null) disables the default space binding — alt+v works, space does not. The mere presence of an explicit voice:pushToTalk binding overrides the default, suggesting the action accepts at most one binding at a time.
What Should Happen?
Either:
(a) All keys bound to voice:pushToTalk should trigger push-to-talk, matching the docs wording about "both keys active"; or
(b) If the action is single-key by design, the docs should state this explicitly, and the selection rule should not silently change between versions.
Error Messages/Logs
Steps to Reproduce
In the Chat context of ~/.claude/keybindings.json, bind multiple keys to voice:pushToTalk. Two configurations were tested.
Configuration A (space first):
{
"context": "Chat",
"bindings": {
"space": "voice:pushToTalk",
"alt+n": "voice:pushToTalk",
"alt+v": "voice:pushToTalk"
}
}
Configuration B (alt+v first):
{
"context": "Chat",
"bindings": {
"alt+v": "voice:pushToTalk",
"alt+n": "voice:pushToTalk",
"space": "voice:pushToTalk"
}
}
Enable voice mode with /voice, then press each bound key.
Actual behavior:
- Configuration A:
spaceworks on ≤v2.1.140,alt+vworks on ≥v2.1.141. - Configuration B:
alt+vworks on ≤v2.1.140,spaceworks on ≥v2.1.141.
Documentation reference: Voice dictation shows an example pairing meta+k with space: null and notes "Omit it if you want both keys active" — implying coexistence is supported.
Claude Model
None
Is this a regression?
Yes, this worked in a previous version
Last Working Version
2.1.140
Claude Code Version
2.1.143
Platform
Anthropic API
Operating System
Ubuntu/Debian Linux
Terminal/Shell
VS Code integrated terminal
Additional Information
Tested linux-x64 binaries from GitHub releases (SHA256-verified). Versions not listed were not available as downloadable binaries.
- First-key selection: v2.1.119, v2.1.121, v2.1.122, v2.1.123, v2.1.128, v2.1.129, v2.1.131, v2.1.132, v2.1.133, v2.1.136, v2.1.137, v2.1.138, v2.1.139, v2.1.140.
- Last-key selection: v2.1.141, v2.1.142, v2.1.143.
TERM=xterm-256color.
Open questions:
- Can
voice:pushToTalkbe bound to multiple keys simultaneously? If not, please update Voice dictation — the "both keys active" sentence is misleading. - Is the change in which key is selected (first listed → last listed) across v2.1.140 → v2.1.141 expected, or a side effect of another change?
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗