[BUG] Desktop Code tab: Auto-fix CI not turned on for new PRs even with 'Auto-fix pull requests' on
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 the desktop app's Code tab, new PRs that Claude opens almost never get "Auto-fix CI" turned on by themselves.
The account setting "Auto-fix pull requests" (ccr_autofix_on_pr_create) has been on for a long time. Its help text says Claude will watch a new PR for CI failures and review comments. In practice I have to tick "Auto-fix CI" by hand on nearly every PR.
Numbers from my machine, PRs Claude opened from 2026-09-25 to 2026-10-01 in one repo:
| Result | PRs |
|---|---|
| Auto-fix turned on by the app itself | 1 |
| Turned on by hand (LocalSessions.setBoundPrAutoFix ... enabled=true in main.log) | 33 |
| Never turned on | 23 |
I counted from the session JSON files (prs[].own, prs[].autoFix) and ~/Library/Logs/Claude/main*.log. The one PR the app armed by itself shows Bound github #N ... ahead of its first read and has no manual toggle line after it. All the others look the same in the log, but the app never armed them.
Things I ruled out:
- PR author: the
ghlogin is the PR author, on both the Mac and the SSH host. - 15-minute window: every PR is bound within about 1 second of
gh pr create. - The PRs are in the session's own repo and branch, and
prs[].ownistrue.
All sessions are SSH sessions (the Mac app drives a Linux host). Claude opens PRs with gh pr create from the terminal. It does not use the app's Create PR button.
What Should Happen?
When the account setting is on, every PR a session opens should get Auto-fix CI turned on, with no manual click.
If something blocks auto-arming, the app should show why. Right now the reason only goes to telemetry (desktop_ccd_autofix_own_pr_arm outcome), so the user can't see it.
Error Messages/Logs
No errors. The failure is silent. From reading the shipped bundle, auto-arming needs all of these at the moment the PR is bound:
autoFixOwnPrsset on the session. A React effect in the transcript view sets it (setAutoFixOwnPrsWanted). It lives only in memory, so it is unset for a session whose transcript has not been shown since the app started.- The
claudeai_cc_epitaxy_session_presets_mainflag on. /v1/code/pr-steward/repo-statussettled withactive_for_callerfalse, and not loading or erroring.armOwnCreateoutcomearmed.
My guess is that one of the first three is usually false. The first one alone would break it for background and spawned sessions, and after every app restart. I can't confirm which check fails, because flag values and the outcome aren't logged locally.
Steps to Reproduce
- Turn on Settings > Claude Code > "Auto-fix pull requests".
- In the desktop app, start an SSH Code session on a GitHub repo.
- Have Claude create a branch, push, and run
gh pr create. - Open the PR's CI popover. "Auto-fix CI" is unchecked.
- Repeat with a session you are not viewing while the PR is created, and again after an app restart.
Claude Model
Opus
Is this a regression?
I don't know
Claude Code Version
Desktop app 2.16120.0 (macOS). Claude Code 2.1.211 on the SSH host.
Platform
Anthropic API
Operating System
macOS 15.7.3 (app). Ubuntu 24.04.3 LTS (SSH host).
Terminal/Shell
Claude desktop app, Code tab
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗