GitHub ActionsにはAIはいない――Claudeが「考えすぎて」ハマった話

GitHub ActionsでCIチェックを導入した。

これまでローカルで実行していた自動テストを、そのままGitHub上でも実行する構成だ。

CIの目的は単純で、GitHub Actionsがプレーンな環境で自動テストを実行し、問題がなければマージできるという、ごく普通の仕組みである。

ところが最初、CIが通らなかった。

そこでClaudeに修正を依頼した。直接の原因はテストプログラムの単純な場合分けエラーだった。

そこだけ直して終わるかと思いきや。。。。。

ここで事件が起きる。

私は当然、

「GitHub Actionsのワークフロー(ci.yml)を読んで、回帰テスト実行してくれ」

と言った。

Claudeもちゃんとci.ymlは読んでいた。それでバグは直してくれた。

……しかし、なぜかローカル開発環境との共存まで考え始めたのである。

「この環境ではこうなるかもしれません」 「ローカルでは別のケースがあります」 「このテストをスキップしたほうが安全です」

などと言いながら、テストコード全体を対象に書き換え始めた。

いやいや。

そこじゃない。

GitHub Actionsのワークフローは毎回まっさらな環境で起動する。

現在のローカルの事情など一切知らない。

AIもいない。

ただci.ymlに書かれた手順だけを、黙々と実行するだけだ。

ところがClaudeは、人間なら「気を利かせた」と言われそうなことを延々と始める。

ローカル環境との整合性を考えたり、テストコードを修正したり、場合によってはスキップを入れようとしたり。

どんどん話が大きくなっていく。

とうとう私もブチ切れた。

「GitHub ActionsにはAIはいない。」

「GitHub Actionsはci.ymlだけ見て動く。」

「ローカル開発環境は意識するな。」

「AIがいなくても通るようにしろ。」

そう指示を出した。

するとClaudeは余計なことをやめ、ci.ymlだけに忠実になった。

結果。

一発でCI通過。

結局、ローカルのテストケース全体の修正する必要など最初からなかった。

原因となったバグだけ直して、GitHub Actionsが実行する手順を、そのまま再現すればよいのだ。

今回改めて感じたのは、AIは「文脈」を理解しようとしすぎることがあるということだ。

特にClaudeはその傾向が強い。

人間同士なら、その気遣いは評価される。

しかしGitHub Actionsには空気を読む能力など存在しないし、いらない。

決められた手順を、決められた順番で実行するだけである。

だからAIも、その世界では空気を読まないほうが正解になる。

AIは本当に優秀だ。

だが、ときどき賢すぎて余計なことを考える。

そして、その余計なことが、一番のバグになる。

賢いのか、バカなのか。

正直、いまだによく分からない。