keybindings.json user customization disabled when DISABLE_TELEMETRY=1

Resolved 💬 4 comments Opened Mar 7, 2026 by twio142 Closed Apr 15, 2026

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

  1. Add "DISABLE_TELEMETRY": 1 to ~/.claude/settings.json under "env"
  2. Create a valid ~/.claude/keybindings.json with custom bindings
  3. Start a new Claude Code session
  4. 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

View original on GitHub ↗

This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗