[BUG] Desktop Code tab: Auto-fix CI not turned on for new PRs even with 'Auto-fix pull requests' on

Status Open
Reported on v2.1.211
Maintainer reply None cached
Activity 1 comment · opened Oct 1, 2026

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 gh login 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[].own is true.

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:

  • autoFixOwnPrs set 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_main flag on.
  • /v1/code/pr-steward/repo-status settled with active_for_caller false, and not loading or erroring.
  • armOwnCreate outcome armed.

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

  1. Turn on Settings > Claude Code > "Auto-fix pull requests".
  2. In the desktop app, start an SSH Code session on a GitHub repo.
  3. Have Claude create a branch, push, and run gh pr create.
  4. Open the PR's CI popover. "Auto-fix CI" is unchecked.
  5. 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

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗