Skip to content

fix(provider): retry the Claude capability probe without --settings - #10215

Closed
geirgp wants to merge 2 commits into
pingdotgg:mainfrom
geirgp:fix/claude-probe-settings-retry
Closed

geirgp wants to merge 2 commits into
pingdotgg:mainfrom
geirgp:fix/claude-probe-settings-retry

Conversation

@geirgp

@geirgp geirgp commented Sep 5, 2026 •

Copy link
Copy Markdown

What

Hook suppression is only expressible as a --settings <json> argument.
Enterprise Claude Code wrappers — managed settings, argument allowlist,
Vertex/Bedrock backend — reject it, so the probe dies before returning init
data. The card reads "Could not verify Claude authentication status" and the
picker empties, on a CLI that runs sessions fine.

Retry once with settings omitted — not disableAllHooks: false, since the
SDK serializes any object into the argument. Timeouts aren't retried. Failures
were swallowed; now logged with cause.

Why

Suppression only stops a health check firing SessionStart hooks — cheap to
lose, unlike capability discovery. --strict-mcp-config and setting sources
survive the retry.

Tests

Suppression off omits settings; a CLI rejecting --settings retries once and
keeps isolation flags; timeouts don't retry.

Note

Retry Claude capability probe without --settings on non-timeout failures

  • probeClaudeCapabilities now runs the probe once with hook suppression (--settings), and retries once without it if the first attempt fails for any reason other than timeout
  • Extracts runClaudeCapabilitiesProbeAttempt so each attempt has its own abort controller and independent suppressHooks flag
  • buildClaudeCapabilitiesProbeQueryOptions gains an optional suppressHooks input (default true); when false the settings property is omitted entirely while other isolation options are preserved
  • Adds isRetryableProbeFailure which classifies every tagged probe failure except TimeoutError as retryable
  • Behavioral Change: timeout failures no longer retry and return undefined after a single attempt; non-timeout failures produce a warning log before retry and another warning if the final result still fails

Macroscope summarized 1b4ce13.

Enterprise Claude Code wrappers enforce an argument allowlist and reject
--settings, leaving the provider unverified and modelless on a working CLI.
@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Sep 5, 2026
@macroscopeapp

macroscopeapp Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 9a89a27

Macroscope's review found this PR approvable — This is a focused Claude capability-probe compatibility fix: normal behavior and isolation remain unchanged, while a single non-timeout failure can trigger a tested retry without --settings. The production impact is limited to periodic capability discovery, with most of the diff consisting of targeted tests.

You can add or adjust custom eligibility rules. Learn more.

Copy link
Copy Markdown
Member

Note

This comment is posted by Julius' dot

The Tests section lists the new probe cases but gives no results from running them, and current-head CI is still waiting for approval. This leaves the retry behavior without the verification evidence required for triage. Please provide the focused probe test command and results, including the rejected-settings retry and timeout cases, then request reconsideration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants