[BUG] Desktop: Auto-fix CI checkbox silently no-ops for PRs not created through the app
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report
- [x] I am using the latest version of Claude Code
What's Wrong?
In Claude Code Desktop, the CI monitoring popover for a bound PR shows an "Auto-fix CI & address comments" checkbox. Clicking it does nothing visible: the checkbox never renders checked, no error appears, and auto-fix never arms.
The main process log records every click as a successful write. I clicked 39 times over about 25 minutes and every line looks like this, always enabled=true and never enabled=false, which means the UI never once considered the box checked:
[info] LocalSessions.setBoundPrAutoFix: sessionId=local_81a2a1ec-..., repo=Soju06/codex-lb, prNumber=1891, enabled=true
The session's persisted store shows why. In a session where the checkbox works, the session JSON under Application Support/Claude/claude-code-sessions/ has a prs array whose entries carry an autoFix flag. In the broken session the store has no prs array at all. The PR exists and the popover resolves it fine (getPrChecks polls it and the CI numbers render), but the PR was created outside the app, so no prs row was ever created for this session. setBoundPrAutoFix appears to only update an existing row: with no row it logs success and writes nothing.
Hand-writing the row into the JSON does not survive, since the app holds session state in memory and rewrites the file on its next persist, dropping the injected row. A full quit and reopen does not help either, because the store still has no row at load time and the setter still has nothing to update.
What Should Happen?
Clicking the checkbox should arm auto-fix, or fail visibly. setBoundPrAutoFix should upsert the row when the popover has already resolved the PR. The repo and PR number are both right there in the log line, so the data needed to create the row exists at click time.
Error Messages/Logs
2026-08-28 09:03:36 [info] LocalSessions.setBoundPrAutoFix: sessionId=local_81a2a1ec-9ec0-47aa-b28d-7ef36d0279d1, repo=Soju06/codex-lb, prNumber=1891, enabled=true
... (39 identical lines across many clicks, no error between them) ...
2026-08-28 09:51:38 [info] Loaded 22 persisted sessions from .../claude-code-sessions/...
2026-08-28 09:51:43 [info] LocalSessions.setBoundPrAutoFix: sessionId=local_81a2a1ec-..., repo=Soju06/codex-lb, prNumber=1891, enabled=true
Session store for the affected session after all of those clicks:
"prs": null
A healthy session on the same machine, for comparison, where the checkbox works:
"prs": [{"prNumber": 17, "url": "...", "repo": "dpearson2699/workflow-step-editor", "host": "github.com", "branch": "...", "baseRef": "main", "state": "MERGED", "autoFix": true, "dismissed": true}]
Steps to Reproduce
- Create a PR outside of Claude Code Desktop. Mine was pushed with plain git and opened on GitHub, an upstream PR whose head branch lives on my fork (Soju06/codex-lb#1891 from dpearson2699/codex-lb).
- Open a Desktop session in the repo worktree on the PR branch, with
gh pr viewresolving the branch to the PR. - Open the CI monitoring popover. CI check counts render correctly.
- Click "Auto-fix CI & address comments".
- The checkbox stays unchecked.
main.logshows thesetBoundPrAutoFixline with no error, and the session JSON still has noprsrow.
Claude Model
Other
Is this a regression?
I don't know
Environment
- Desktop app 1.37937.3
- CLI 2.1.245
- macOS 26.6.2, arm64