[BUG] Cowork automated browser control stops syncing input to React (ProseMirror/Remirror) editors mid-session (macOS)
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?
Cowork's automated browser control (Claude in Chrome via Claude Desktop — NOT Claude Code CLI) stopped syncing the React state of a ProseMirror/Remirror editor mid-session. Text delivered by the automated control appears in the editor's DOM but does NOT sync the React state that gates the submit button, so the button stays aria-disabled="true" and submit never fires. Genuine human input (paste + Enter) works fine on the same editor in the same session — only the automated input path fails. Worked normally until 2026-06-09.
Mid-session regression: the first 3 submissions worked cleanly; from the 4th onward (~30 min in) input stopped syncing and never recovered.
Environment: macOS, Chrome 148.0.0.0, target is a React app whose composer is a ProseMirror/Remirror editor (class="ProseMirror remirror-editor").
Related but DISTINCT (all are human input on desktop/Windows where the editor itself breaks): #55721, #56663, #58536. This one is automated browser control on macOS, editor works for human input, only the automated path fails. Filing separately.
What Should Happen?
Cowork's automated input should sync the editor's onChange/React state the same way genuine user input does, so React-gated submit buttons enable and fire.
Error Messages/Logs
No error/stack trace. Observable state: editor DOM contains the typed text, but the send button stays aria-disabled="true". Reaching the ProseMirror EditorView via the React fiber and dispatching view.dispatch(tr.insertText(...)) updates the editor's own state but does NOT enable the button — confirming enablement depends on a separate React state updated only by genuine-input onChange.
Steps to Reproduce
- In Cowork, drive a React app whose composer is a ProseMirror/Remirror editor.
- Use automated browser control to type into the editor and click send.
- Observe: text is in the DOM, the button stays aria-disabled="true", no submit fires.
- Confirm human paste+Enter on the same field works (only automation fails).
Tried, all failed after the regression: bulk typing; individual keypresses; execCommand('insertText'); synthetic paste with DataTransfer; dispatching a real ProseMirror transaction via the React fiber (editor state updates but button stays disabled); Enter / Cmd+Enter.
Ruled out: full Chrome restart does NOT recover it (unlike #55721, this is not an Electron cache issue); session/login ruled out (clean tab with active SSO, same failure).
Likely cause (hypothesis): a change in how the engine delivers keystrokes (CDP Input.insertText / composition vs dispatchKeyEvent) that Remirror no longer registers as genuine user input.
Claude Model
None
Is this a regression?
Yes, this worked in a previous version
Last Working Version
Worked normally until 2026-06-09 (same Cowork/Claude Desktop build; exact version string not captured)
Claude Code Version
N/A — not Claude Code CLI. This is Cowork / Claude in Chrome (Claude Desktop browser control).
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
Note on template fit: this template targets Claude Code CLI, but this report is about Cowork / Claude in Chrome (Claude Desktop's automated browser control), not the CLI. The "Claude Code Version" and "Terminal" fields don't strictly apply — filled with the closest available values. The core issue is the browser-control input path, not the CLI.