anthropics / anthropics/claude-code
[BUG] Cowork folder-access dialog ignores all mouse input when the Claude window is on a monitor at negative X coordinates (keyboard still works)
- Ngôn ngữ chính
- Python
- Star
- 145k
- Fork
- 23.1k
- Chỉ số merge pull request
- Chỉ số pull request đang chờ
Mô tả
### Preflight Checklist
- [x] I have searched [existing issues](https://github.com/anthropics/claude-code/issues?q=is%3Aissue%20state%3Aopen%20label%3Abug) 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?
In Cowork, the "Folder access request" modal ("Allow this Cowork session to access this folder?") renders correctly but does not respond to **any** mouse input — the Allow link, the "Don't ask again for this folder on this device" checkbox, the X, and Cancel are all unclickable. There are no hover states. The app appears completely frozen.
It is not frozen. `Get-Process Claude` reports `Responding: True` throughout, and **keyboard input still reaches the dialog** — Enter activates Allow and the grant goes through normally.
**The trigger is the monitor the Claude window is on.** The dialog is unclickable when the Claude window sits on a display whose virtual-desktop origin has a negative X coordinate. Move the same window to the primary display at (0,0) and the dialog becomes fully clickable, immediately, with no restart.
This looks like the modal's paint position and its hit-test region are being computed against different origins — the dialog draws on the correct monitor, but its clickable region is offset by the monitor's origin (~2560px in my case), landing on empty space over on the primary display. That would explain both the total absence of hover feedback and the fact that keyboard focus is unaffected.
My layout (4 × 2560×1440, all at 96 DPI / 100% scaling):
| Display | Origin |
|---|---|
| primary | (0, 0) |
| left | (-2560, 0) |
| top | (3, -1440) |
| far upper-left | (-3837, -2160) |
Broken with the window maximized on `(-2560, 0)`. Working with the window maximized on `(0, 0)`. Verified in both directions.
Related: #45099 reports the same freeze and correctly identifies it as an Electron modal rendering issue, but never isolated the cause; it was closed as not planned. That reporter tried `ELECTRON_DISABLE_GPU=1`, disabling notifications, and display-scaling changes — none of which would help if the real variable is the sign of the window's monitor origin. They did note that maximizing reduced the frequency, which fits: maximizing can move the window onto a different display. Filing fresh because the trigger is now identified and it is a one-line repro.
### What Should Happen?
The folder-access dialog should respond to mouse clicks regardless of which monitor the Claude window occupies, including displays at negative virtual-desktop coordinates (i.e. any monitor positioned left of or above the primary).
The modal's hit-test region should be computed in the same coordinate space it is painted in.
### Error Messages/Logs
```shell
```
### Steps to Reproduce
Requires a multi-monitor Windows setup with at least one display positioned to the left of (or above) the primary, so that its virtual-desktop origin is negative.
1. In Windows Display Settings, confirm you have a display whose origin has a negative X — e.g. primary at (0,0) and a second monitor at (-2560, 0).
2. Move the Claude desktop window onto that negative-origin monitor and maximize it.
3. Start a new Cowork project pointed at a local folder that has not been granted before, and give it any task that touches the folder.
4. The "Folder access request" dialog appears.
5. Try to click "Allow", the "Don't ask again for this folder on this device" checkbox, Cancel, or the X. **Nothing responds, and no element shows a hover state.**
6. Press Enter — the dialog dismisses and access is granted, confirming the app was never hung.
7. Now move the Claude window to the primary display at (0,0), maximize, and repeat steps 3–5. **Every control clicks normally.**
To read the window's current monitor programmatically:
```powershell
# returns the monitor rect the Claude window is on, plus whether it is primary
$h = (Get-Process Claude | Where-Object { $_.MainWindowTitle } | Select-Object -First 1).MainWindowHandle
# MonitorFromWindow($h, 2) -> GetMonitorInfo -> rcMonitor
```
Note: a window maximized on the primary display reports a window rect of `L=-8, T=-8` due to the invisible resize border. That is not a negative-origin monitor — check the *monitor* rect, not the window rect.
### Claude Model
None
### Is this a regression?
Yes, this worked in a previous version
### Last Working Version
Unknown — previous build was removed by auto-update, so it could not be re-tested
### Claude Code Version
Claude desktop app 1.49585.0.0 (not the CLI — this is a Cowork/desktop UI bug)
### Platform
Other
### Operating System
Windows
### Terminal/Shell
Other
### Additional Information
**Environment**
- Claude desktop app `1.49585.0.0`, MSIX / Microsoft Store build (`C:\Program Files\WindowsApps\Claude_1.49585.0.0_x64__…`)
- Windows 11
- 4 × 2560×1440 displays, all 96 DPI (100% scaling), so this is not a mixed-DPI issue
- This is the Cowork surface in the desktop app, not the Claude Code CLI. The CLI is unaffected — it never shows this modal.
**Timeline**
The package on this machine was written 2026-09-08 11:14 local; the app was restarted 2026-09-09 08:04 and the bug appeared on the first new project after that. The monitor layout has not changed. I therefore believe this is a regression in `1.49585.0.0`, but I want to be precise about what I can and cannot prove: the previous package version was removed by the auto-update, so I could not roll back and re-test, and I did not have a reason to check this dialog on a negative-origin monitor before yesterday. Treat the regression claim as strongly suggested by timing rather than bisected.
What *is* directly verified, in both directions, on this build: negative-origin monitor → dialog is unclickable; primary monitor at (0,0) → dialog is clickable.
**Notes for whoever picks this up**
- The process stays responsive (`Responding: True`), so this will not appear in hang/crash telemetry. Users will report it as "the app froze", which is probably why it has been hard to reproduce.
- There is no hover feedback on any control, which points at hit-testing rather than event handling.
- Keyboard is a complete workaround: Tab to the checkbox, Space, then Enter. Worth noting that Enter maps to **Allow** — a user mashing Enter to clear a dialog they cannot read is silently granting folder access, which seems worth a second look on its own.
- Likely the same underlying defect as #45099, and possibly the same as #54872 (Claude Desktop freezing when Computer Use is initiated), if that modal shares the code path.
**No error output.** Nothing is logged when this happens — `%APPDATA%\Claude\logs` had not been written to in weeks on this machine, which may itself be worth checking for the Store build.
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Hướng nghiên cứu
No repository file or test is named. First reproduce the Cowork folder-access dialog on Windows with the Claude window maximized on a negative-origin monitor, then inspect the Electron modal's coordinate and hit-testing path. Done means Allow, the checkbox, Cancel, and the close control respond to mouse input on negative-origin monitors while primary-display behavior remains intact.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- electron
- Lĩnh vực
- desktop
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Sôi nổi
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 45/100