Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

[Bug]: Claude version probe drops CLI stderr, so a broken wrapper shows only "installed but failed to run"

オープン 初心者向け
#22,873 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

@juliusmarminge がすでに取り組んでいます。

2026年10月21日 から。

  • #22878 @juliusmarminge による — オープン

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
76/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
typescript
領域
backend

調査の方向性

apps/server/src/provider/ClaudeProvider.ts の562~582行目にあるバージョン確認処理から始めてください。確認処理がゼロ以外の終了コードをどう扱うか、警告とユーザー向けステータスメッセージがどう組み立てられるかを読みます。issueには、再現用の失敗するラッパーコマンドとそのstderrが記載されています。確認処理が有用なエラー詳細を保持して表示しつつ、フォールバックメッセージも維持し、関連するproviderのチェックが通れば完了です。

索引モデルが issue の本文から書いたものです。

説明

Area

apps/server

Steps to reproduce
  1. Install the Claude CLI wrapper so its postinstall never runs, leaving the placeholder stub it ships with:
    npm i -g --ignore-scripts @anthropic-ai/[email protected]
    
  2. Confirm the CLI fails and explains why:
    $ claude --version; echo "exit=$?"
    Error: claude native binary not installed.
    
    Either postinstall did not run (--ignore-scripts, some pnpm configs)
    or the platform-native optional dependency was not downloaded
    (--omit=optional).
    
    Run the postinstall manually (adjust path for local vs global install):
      node node_modules/@anthropic-ai/claude-code/install.cjs
    
    Or reinstall without --ignore-scripts / --omit=optional.
    exit=1
    
  3. In T3 Code go to Settings → Providers and refresh the probe (the control next to "Checked just now", i.e. server.refreshProviders).
Expected behavior

The provider card and/or the server log carry the CLI's own explanation, at least the first stderr line. The failing CLI already prints the exact fix command, and T3 has that text in hand.

Actual behavior

The card shows only:

Unavailable · Claude Agent CLI is installed but failed to run.

The only record is this warning, which keeps lengths and throws the text away (apps/server/src/provider/ClaudeProvider.ts:565-569):

{
  "name": "checkClaudeProviderStatus",
  "events": [
    {
      "name": "[\n  \"Claude Agent CLI version probe exited with a non-zero status.\",\n  {\n    \"exitCode\": 1,\n    \"stdoutLength\": 0,\n    \"stderrLength\": 383\n  }\n]",
      "attributes": { "effect.logLevel": "WARN" }
    }
  ]
}

Those 383 bytes of stderr were the message quoted in step 2. Since only the length is persisted, no UI surface can recover the cause afterwards. The user-facing message is hardcoded at :580.

Impact

Minor bug or occasional failure

Justification: once a wrapper install is broken, the provider is unusable and the report offers no path to recovery. Every wrapper breakage lands here identically — pnpm installs, --omit=optional, and Chocolatey-style installs as in #22810.

Version or commit

0.1.2-nightly.20261021.3473. Still present on main: apps/server/src/provider/ClaudeProvider.ts:562-582.

Environment

WSL2, Ubuntu 24.04.5 LTS (kernel 6.18.33.2-microsoft-standard-WSL2), Node v24.21.0 via fnm, @anthropic-ai/claude-code 2.1.306 (npm global). T3 host is the WSL distro (Settings header renders "on wsl"). Provider: Claude (claudeAgent); Codex and OpenCode were unaffected on the same host.

Logs or stack traces
$ grep -h "version probe exited" ~/.t3/userdata/logs/server.trace.ndjson | tail -1
{"type":"effect-span","name":"checkClaudeProviderStatus","durationMs":14.466428,"events":[{"name":"[\n  \"Claude Agent CLI version probe exited with a non-zero status.\",\n  {\n    \"exitCode\": 1,\n    \"stdoutLength\": 0,\n    \"stderrLength\": 383\n  }\n]","attributes":{"effect.logLevel":"WARN"}}]}
Workaround

Run the wrapper's postinstall by hand, then refresh the provider probe:

node "$(npm root -g)/@anthropic-ai/claude-code/install.cjs"

The provider flips to Available once claude --version exits 0. This is restating step 2's own advice, which T3 discarded.

Suggested fix
if (version.code !== 0) {
  const detail = firstNonEmptyLine(version.stderr) || firstNonEmptyLine(version.stdout);
  yield* Effect.logWarning("Claude Agent CLI version probe exited with a non-zero status.", {
    exitCode: version.code,
    stderr: truncate(version.stderr, 2000), // keep the text, not just its length
  });
  // message: detail
  //   ? `Claude Agent CLI is installed but failed to run: ${detail}`
  //   : "Claude Agent CLI is installed but failed to run.",
}

Same class of problem as #19571 (closed), which fixed stderr being dropped for turns. The availability probe was not covered by that fix.

主要言語
TypeScript
スター
24.8k
フォーク
6.4k
平均マージ
1時間 22分
マージ済み PR(30日)
18

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

pingdotgg/t3code のほかの issue

pingdotgg/t3code の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。