keybindings.json user customization disabled when DISABLE_TELEMETRY=1
Bug Report
Summary
User keybinding customization (~/.claude/keybindings.json) is silently ignored when DISABLE_TELEMETRY=1 is set in settings.json. The debug log reports Skipping file watcher - user customization disabled on every session start, and custom keybindings have no effect.
Steps to Reproduce
- Add
"DISABLE_TELEMETRY": 1to~/.claude/settings.jsonunder"env" - Create a valid
~/.claude/keybindings.jsonwith custom bindings - Start a new Claude Code session
- Custom keybindings do not work
Debug Log Output
Every session start shows:
[keybindings] KeybindingSetup initialized with 104 bindings, 0 warnings
[keybindings] Skipping file watcher - user customization disabled
Root Cause (suspected)
The keybinding customization feature is gated behind the tengu_keybinding_customization_release GrowthBook feature flag. When DISABLE_TELEMETRY=1 is set, GrowthBook cannot initialize and the flag evaluates to false — even though a cached value of true exists in ~/.claude/.claude.json. The code then skips loading keybindings.json entirely.
The fix should be to either:
- Fall back to the cached feature flag value when network traffic is disabled, or
- Not gate a local filesystem feature like keybinding customization behind a network-fetched feature flag at all
Expected Behavior
DISABLE_TELEMETRY should not affect local filesystem features like keybinding customization.
Workaround
Remove DISABLE_TELEMETRY: 1 from settings.json.
Environment
- Claude Code version:
2.1.71 - OS: macOS 24.6.0
- Terminal: Ghostty
- Install method: Homebrew cask
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗