claude-code - 💡(How to fix) Fix [BUG] Mouse tracking + bracketed paste experiment (tengu_malort_pedway) breaks all keyboard input on macOS [2 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
anthropics/claude-code#54693Fetched 2026-04-30 06:38:38
View on GitHub
Comments
2
Participants
2
Timeline
5
Reactions
0
Timeline (top)
labeled ×3commented ×2

Error Message

Error Messages/Logs

Fix Action

Fix / Workaround

Workarounds I've found:

  1. Move mouse cursor outside the Claude Code window before typing
  2. For paste: write content to /tmp/clip.txt and ask Claude to read it instead of pasting
  3. None of these fix voice dictation — that just doesn't work at all

Code Example

"cachedGrowthBookFeatures": {
  "tengu_malort_pedway": {
    "mouseAnimation": true
  }
}

---

Sample of the input field corruption (mouse tracking SGR 1006 reports leaking into the prompt):

^[[<35;120;45M^[[<35;120;44M^[[<35;119;44M^[[<35;118;44M^[[<35;118;43M^[[<35;117;43M
^[[<35;116;43M^[[<35;115;43M^[[<35;115;42M^[[<35;114;42M^[[<35;113;42M^[[<35;112;42M
^[[<35;112;41M^[[<35;111;41M^[[<35;110;41M^[[<35;109;40M^[[<35;108;40M

After paste from Claude.ai (bracketed paste end marker + focus event leaking after content):

[pasted markdown content] ... ^[[201~^[[O

Active GrowthBook flag from ~/.claude.json:

"cachedGrowthBookFeatures": {
  "tengu_malort_pedway": {
    "mouseAnimation": true
  }
}

iTerm2 dialog confirms the application left mouse reporting on:
"Looks like mouse reporting was left on when an ssh session ended unexpectedly or an app misbehaved. Turn it off?"

---

cat ~/.claude.json | python3 -c "import json,sys;d=json.load(sys.stdin);print(d.get('cachedGrowthBookFeatures',{}).get('tengu_malort_pedway'))"

---

"cachedGrowthBookFeatures": {
  "tengu_malort_pedway": {
    "mouseAnimation": true
  }
}

---

cat ~/.claude.json | python3 -c "import json,sys;d=json.load(sys.stdin);print(d.get('cachedGrowthBookFeatures',{}).get('tengu_malort_pedway'))"
RAW_BUFFERClick to expand / collapse

Preflight Checklist

  • I have searched existing issues and this hasn't been reported yet
  • This is a single bug report (please file separate reports for different bugs)
  • I am using the latest version of Claude Code

What's Wrong?

Started ~24 hours ago. Every new Claude Code window I open has broken input. Older windows opened before the change continue to work fine, which means this was server-pushed, not a local issue.

Symptoms (all in fresh windows, no other changes on my system):

  • Keyboard input drops characters and becomes unresponsive after a few seconds
  • Comma key sometimes needs to be pressed twice to register
  • Voice dictation (macOS Dictation) is completely unable to inject text
  • Pasting text from Claude.ai or any rich-text source dumps ^[[<35;...M, ^[[O, ^[[I, and ^[[201~ sequences into the input box
  • Moving the mouse over the Claude Code window also injects ^[[<35;X;YM sequences (mouse tracking SGR 1006 reports leaking into stdin)
  • iTerm2 detects this and pops up "Looks like mouse reporting was left on when an ssh session ended unexpectedly or an app misbehaved. Turn it off?"
  • Terminal sometimes becomes completely unresponsive — Ctrl+C does nothing, even after the claude process has exited the parent shell's TTY state stays corrupted

Same behavior across Terminal.app, iTerm2, and Warp. Same behavior on Node v24 (original) and Node v22.22.2 (after I reinstalled via nvm). Same on Claude Code 2.1.123 and 2.1.104.

Found this in ~/.claude.json which I think is the smoking gun:

"cachedGrowthBookFeatures": {
  "tengu_malort_pedway": {
    "mouseAnimation": true
  }
}

Looks like a GrowthBook A/B experiment turning on mouse tracking for some users. I never opted into experimental features. As a paying Max subscriber I expect to be informed before experimental features get pushed to my account, especially ones that break core input handling.

Tested setting mouseAnimation: false directly in the config — that made things worse (every mouse move leaked, not just edge cases), so the flag is clearly tied to active code paths but doesn't have a clean "off" state. Reverted via backup.

This is a regression. Same machine, same workflow, fully working until ~28 hours ago. ~24 hours of lost work.

What Should Happen?

  1. Keyboard input, paste, and macOS Dictation should work in Claude Code regardless of which experiment group I'm assigned to.

  2. Experimental features that touch core input handling (mouse tracking, bracketed paste, focus reporting) should not be silently rolled out via server-pushed feature flags. There should be an explicit opt-in for paying users, or at minimum an environment variable / settings flag to opt out of cachedGrowthBookFeatures.*.

  3. Disabling tengu_malort_pedway.mouseAnimation in the local config should cleanly disable the feature without leaving mouse tracking partially enabled.

  4. Ideally, accounts on paid tiers (Max/Pro) should not be enrolled in TUI experiments at all without consent.

Error Messages/Logs

Sample of the input field corruption (mouse tracking SGR 1006 reports leaking into the prompt):

^[[<35;120;45M^[[<35;120;44M^[[<35;119;44M^[[<35;118;44M^[[<35;118;43M^[[<35;117;43M
^[[<35;116;43M^[[<35;115;43M^[[<35;115;42M^[[<35;114;42M^[[<35;113;42M^[[<35;112;42M
^[[<35;112;41M^[[<35;111;41M^[[<35;110;41M^[[<35;109;40M^[[<35;108;40M

After paste from Claude.ai (bracketed paste end marker + focus event leaking after content):

[pasted markdown content] ... ^[[201~^[[O

Active GrowthBook flag from ~/.claude.json:

"cachedGrowthBookFeatures": {
  "tengu_malort_pedway": {
    "mouseAnimation": true
  }
}

iTerm2 dialog confirms the application left mouse reporting on:
"Looks like mouse reporting was left on when an ssh session ended unexpectedly or an app misbehaved. Turn it off?"

Steps to Reproduce

  1. Open a fresh terminal window in macOS Terminal.app, iTerm2, or Warp
  2. Run claude to start Claude Code
  3. Move the mouse cursor over the Claude Code window — ^[[<35;X;YM sequences immediately appear in the input box
  4. Try to type — characters drop intermittently
  5. Try macOS Dictation (Fn-Fn) — no text gets injected
  6. Try pasting any markdown/rich-text content from a browser — input field gets corrupted with ^[[201~ and ^[[O artifacts at the end of the paste

The bug only triggers in windows opened after the experiment group was rolled out (~April 28 evening UTC+8 in my case). Pre-existing windows that were running before the rollout continue to work perfectly until they're closed.

Verifying the experiment flag:

cat ~/.claude.json | python3 -c "import json,sys;d=json.load(sys.stdin);print(d.get('cachedGrowthBookFeatures',{}).get('tengu_malort_pedway'))"

If this returns {'mouseAnimation': True} you're in the affected experiment group.

Claude Model

Opus

Is this a regression?

Yes, this worked in a previous version

Last Working Version

2.1.123 was working until ~April 28 evening (UTC+8); the experiment flag rollout broke it mid-session

Claude Code Version

2.1.104 (Claude Code)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

Reproduced in three terminals: Terminal.app (macOS 15.6), iTerm2, and Warp. Same bug behavior across all three.

The smoking gun is in ~/.claude.json:

"cachedGrowthBookFeatures": {
  "tengu_malort_pedway": {
    "mouseAnimation": true
  }
}

tengu_malort_pedway is a GrowthBook A/B experiment flag that's enabling mouse tracking for some accounts. I never opted into experimental features. As a paying Max subscriber, having experimental TUI features silently pushed to my account without consent — and breaking core input handling for 24+ hours — isn't acceptable.

Verifying which users are affected:

cat ~/.claude.json | python3 -c "import json,sys;d=json.load(sys.stdin);print(d.get('cachedGrowthBookFeatures',{}).get('tengu_malort_pedway'))"

Returns {'mouseAnimation': True} for affected accounts.

Manually setting mouseAnimation: false in the local config doesn't cleanly disable it — it actually makes things worse (every mouse move leaks ^[[<35;...M into stdin instead of just edge cases). The flag is wired into active code paths but has no clean off state. Reverted via backup.

Workarounds I've found:

  1. Move mouse cursor outside the Claude Code window before typing
  2. For paste: write content to /tmp/clip.txt and ask Claude to read it instead of pasting
  3. None of these fix voice dictation — that just doesn't work at all

Asks:

  1. Roll back tengu_malort_pedway.mouseAnimation for affected users while the input handler is being fixed
  2. Add a way for paying users to opt out of cachedGrowthBookFeatures.* experiments
  3. ETA on the engineering fix would be appreciated — this has cost me 24+ hours of work already
<img width="789" height="677" alt="Image" src="https://github.com/user-attachments/assets/a6589e20-e84e-4206-81ec-9f66d9318fa1" />

extent analysis

TL;DR

The issue can be temporarily mitigated by rolling back the tengu_malort_pedway.mouseAnimation feature flag for affected users.

Guidance

  • Verify if you are in the affected experiment group by checking the ~/.claude.json file for the tengu_malort_pedway flag using the provided Python script.
  • As a temporary workaround, try moving the mouse cursor outside the Claude Code window before typing or use the suggested paste workaround.
  • Consider reaching out to the development team to request a rollback of the tengu_malort_pedway.mouseAnimation feature flag for affected users.
  • Keep an eye on the issue tracker for updates on the engineering fix and potential opt-out mechanisms for paying users.

Example

No code snippet is provided as the issue is related to a specific feature flag and experiment.

Notes

The provided workarounds may not fully resolve the issue, and a proper fix from the development team is necessary to restore normal functionality. The tengu_malort_pedway.mouseAnimation flag seems to be the root cause, but manually setting it to false does not cleanly disable the feature.

Recommendation

Apply the workaround of rolling back the tengu_malort_pedway.mouseAnimation feature flag for affected users until a proper fix is available, as this is the most direct way to mitigate the issue.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

claude-code - 💡(How to fix) Fix [BUG] Mouse tracking + bracketed paste experiment (tengu_malort_pedway) breaks all keyboard input on macOS [2 comments, 2 participants]