Repository navigation
Conversation
autofix が failure で終わる原因は、ANTHROPIC_API_KEY が空なことではない。 claude-code-action は claude_code_oauth_token を受け取ると、ANTHROPIC_API_KEY を空のまま CLAUDE_CODE_OAUTH_TOKEN で動く。token は認証されていた。直近 40 件の run はどれも、 token のサブスクが 7 日の上限に達していて、Claude が 1 ターン目に 「You've hit your weekly limit」を返して止まっていた。依存の導入と toolchain の準備に 約 80 秒かけた後で is_error だけが出るので、原因が読めなかった。 checkout の直後に .github/scripts/claude-preflight.sh を動かし、Claude Code に 1 回答えさせる。 secret が空なら Claude を呼ばずに落ちる。401 なら token が拒まれたことを、429 なら 認証は通ったがサブスクの上限で走れないことと、解除の時刻を ::error:: に出して止める。 API を直接呼ばず CLI を使うのは、サブスクの OAuth token は Claude Code からの呼び出しでないと 受け付けられないため。 認証は今の CLAUDE_CODE_OAUTH_TOKEN(Claude サブスクの setup-token)のまま使う。 従量課金の API キーに替えると課金が発生するが、サブスクの token なら追加の費用がかからないため。
Claude がコミットせずに終わると、ログには「Claude did not commit a fix」しか残らなかった。 claude-code-action は Claude の出力を伏せるので、直せなかった理由をどこからも読めなかった。 確かめに使った run では、Claude は 14 ターン動いて成功で終わったのにコミットがなく、 理由が分からなかった。 コミットがないときと Claude が失敗したときは、claude-execution-output.json の最後の result を ::error:: に入れる。複数行の答えも annotation に収まるよう、%・CR・LF を GitHub の書式で エスケープする。
確かめの run で Claude は 14 ターン、約 24 分動いたが、コミットせずに終わった。 libs/ai/src/providers/data/ は gitignore されていて、verify ジョブだけが `vp run hydrate:model-data` で生成している。autofix のジョブは verify のセットアップを 写したときにこの step を落としていたので、Claude が直しても `vp run verify` が通らず、 「通るまで繰り返してからコミットする」という指示どおりにコミットまで進めなかった。 autofix に同じ step を足した。2 つのワークフローの準備手順がまたずれないよう、 tools/checks/autofix-environment.test.ts が、verify ジョブの checkout から verify の 実行までの step と、autofix の target から Claude までの step(if を除く)が同じかを確かめる。 composite action にまとめなかったのは、zizmor が `./` の参照に self-repository の指摘を出し、 推奨の `$/` は actionlint 1.7.12 が読めないため。どちらかの検査を緩めることになる。
masseater
force-pushed
the
fix/autofix-auth-preflight
branch
from
October 25, 2026 14:10
840cc4a to
2d2afbb
Compare
autofix は GITHUB_TOKEN で push していたので、push しても pull_request の workflow が 起動せず、必須の commits が付かないまま PR が BLOCKED に残っていた(#241)。 GITHUB_TOKEN が起こしたイベントでは workflow_dispatch 以外の workflow が走らないため。 - push には、このリポジトリだけに書ける deploy key(secret AUTOFIX_DEPLOY_KEY)を使う。 GitHub App はブラウザでの作成が要り、ここでは作れない。deploy key は gh だけで作れ、 権限がこのリポジトリに閉じ、release の Homebrew tap と同じ形で使える。 - Claude を動かす job からは書き込み権限を外し、push は別の job で、deploy key で checkout してから行う。Claude が書き換えた環境(PATH や git の設定)に鍵を渡さないため。 Claude の commit は bundle で渡し、失敗した commit の子孫であることを確かめてから push する。 - push で pull_request の check が走るので、verify と up-to-date の workflow_dispatch はやめた。 - main の失敗を直す claude/fix-verify-* の枝は、PR を GITHUB_TOKEN で開くので pull_request が起動しない。この枝への push で verify・commits・up-to-date を走らせ、 同じ head に必須の check を付ける。新しい枝の push では before が無いので、commits は main との merge base から検査する。deploy は main の push だけで動かす。 - deploy key の push では actor が github-actions[bot] にならず、verify 側の actor の条件では autofix 自身の修正の失敗で autofix が繰り返し起動しうる。失敗した commit の author が autofix なら、起動直後に理由を出して止める。 - secret AUTOFIX_DEPLOY_KEY が空なら、Claude を動かす前に明示的なエラーで止める。
Owner
Author
|
autofix の CI 自体を消す方針にしたため、認証を直すこの PR は閉じる。削除は #251。 |
masseater
added a commit
that referenced
this pull request
Oct 27, 2026
verify が落ちたときに Claude を動かして修正を push する仕組みだった。 push した commit には必須 check が付かず(#241)、認証を直す #237 も deploy key・preflight・専用テストと足し続ける形になっていた。 直す対象ごと要らないと判断し、足すのをやめて消す。 main に残っていた autofix の参照は autofix.yml と verify.yml の autofix job、 ci-telemetry の needs だけで、専用の script・テスト・docs は無い。 autofix だけが使っていた Actions secret AUTOFIX_DEPLOY_KEY と CLAUDE_CODE_OAUTH_TOKEN は他の workflow が使わないので別途消す。 Msa-Merge: 68a43e05-afaa-4095-9756-f6fc5b69030e
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
autofix が verify の失敗で起動したとき、まず Claude の token と残量を確かめるようにした。直せたら修正コミットを deploy key で push し、その head に必須の check が付く。直せないときはその理由をログに出して終わる。
You've hit your weekly limitで止まっていた。vp run hydrate:model-dataが無く、gitignore された model data が無いままだった。そのため Claude が直してもvp run verifyが通らず、コミットまで進めなかった。commitsが付かないまま PR が BLOCKED に残っていた。.github/scripts/claude-preflight.shを動かす。secret が空なら Claude を呼ばずに落ちる。401 なら拒まれたこと、429 なら認証は通ったが上限で走れないことを::error::に出して止める。::error::に出す。tools/checks/autofix-environment.test.tsが、autofix の準備の step が verify ジョブと同じかを確かめる。AUTOFIX_DEPLOY_KEY)を使って行う。secret が空なら Claude を動かす前に止める。claude/fix-verify-*の枝への push でも verify・commits・up-to-date が走る。Closes #241