Codexの自動コードレビューは「@codexするだけ」では動かなかった
Codexの自動コードレビューは「@codexするだけ」では動かなかった


「PRに@codexするだけ」——のはずだった
OpenAI Codex には、GitHub のプルリクエスト(PR)を自動でレビューしてくれる機能があります。謳い文句はシンプルで、「PR に @codex とメンションするだけで、AI がコードをレビューしてくれる」。
普段から GitHub Actions でいくつかのリポジトリを回している身としては、これはありがたい。人間のレビュアーの代わり、あるいは補助になるなら使ってみたい——というわけで、実際に試してみることにしました。
この記事は、その検証ログです。先に言っておくと、結論にたどり着くまでが長かったです。「@codexするだけ」という触れ込みの裏に、それなりの沼がありました。結論を先に置かず、実際にハマった順番のまま記していきます。

準備:わざとツッコミどころを仕込んだPRを作る
レビュー能力を測るために、わざと問題を仕込んだコードを用意しました。これを PR にして、Codex が何を拾って何を見逃すかを見れば、レビュー能力が丸裸になります。
TypeScript プロジェクトに、こんな review_test.ts を追加しました。仕込んだ問題は5つです。
// 問題1: APIキーをハードコード(セキュリティ的にアウト) const API_KEY = "sk-test-1234567890abcdef"; // 問題2: 意味不明な変数名 + any濫用 function f(a: any, b: any) { const x = a + b; return x; } // 問題3: nullチェック漏れ(dの中身を検証せず深く辿る) function getUserName(d: any) { return d.user.name.toUpperCase(); } // 問題4: 例外を握りつぶす async function risky() { try { const result = await fetch("https://example.com"); return await result.json(); } catch (e) { // 何もしない } } // 問題5: 無限ループの種(i-- を書き忘れ) function countdown(n: number) { let i = n; while (i > 0) { console.log(i); // i-- を書き忘れている } }
検証用ブランチを切ってコミット・プッシュし、PR を作成。あとは PR のコメント欄で @codex review と打てば、レビューが返ってくる……はずでした。

沼1:@codex reviewしても、無音
PR のコメント欄で @codex review と送りました。@codex はちゃんと青いリンクになり、ホバーすると「OpenAI's coding agent」という説明も出る。実在する bot です。メンションのやり方は合っているはず。
ところが——20分待っても、何の反応もない。
bot のリアクション(👀)も、レビューコメントも、エラーメッセージすら出ません。完全な無音です。後で調べて分かったのですが、これは公式の issue でも数多く報告されている「サイレント失敗」という状態でした。設定が足りていないのに、エラーも出ないので何が悪いのか分からない。

ここで一度、別のリポジトリ(自分の個人アカウント配下)でも同じことを試しました。「他人のアカウントのリポジトリだから動かないのでは」と疑ったからです。しかし、自分のリポジトリでも無音。原因は所有者ではなく、別のところにありました。
沼2:原因は「連携しただけ」だった
調べて分かった原因はこうです。
最初にやった「GitHub アカウントとの連携(OAuth)」は、あくまでアカウント同士の紐付けにすぎません。@codex を bot としてリポジトリで動かすには、それとは別に、
Codex の GitHub App(bot)をリポジトリにインストールする
Codex 側の設定で、そのリポジトリのコードレビューを有効化する
この2つが必要でした。連携だけでは、bot はリポジトリに常駐していないので、メンションしても黙っているわけです。
設定画面(chatgpt.com/codex のコードレビュー設定)を開くと、案の定、自動レビューのトグルはすべて OFF。さらにリポジトリ一覧で検索しても「リポジトリはありません」と表示され、検証台のリポジトリが Codex に認識すらされていませんでした。
沼3:botをインストールしても、すぐには反映されない
コネクター設定から「ChatGPT Codex Connector」のインストール先を選び直しました。ここで、bot に与える権限の一覧が出ます。
注目したのは権限の中身です。pull requests への read & write 権限が含まれていました。レビューコメントを「書き込む」には、この write 権限が必須です。最初の OAuth 連携にはこれが無かった——これが無音の真の原因だったわけです。

リポジトリを Only select repositories で検証台だけに絞り、インストールを承認。ところが、設定画面に戻ってもリポジトリ一覧にはまだ出てこない。ここでもサイレントな反映ラグがありました。ページをリロードして、ようやくリストに登場。
リポジトリが登録できたら、その行で「自動コードレビュー」と「徹底的なコードレビュー」を ON にします。Codex のこの設定はトグルを切り替えた瞬間に自動保存で、保存ボタンはありません。

ここまで、トータルで1時間半以上。本来見たかった「レビュー能力」には、まだ一度もたどり着いていません。
ようやく、Codexが動いた
設定を終えて、PR で改めて @codex review。すると今度は——コメントに 👀 のリアクションが付きました。「レビュー依頼を受け付けた」というサインです。1回目は無音だったのに、bot インストール後の2回目には反応した。設定が効いた瞬間でした。
<!-- ▼画像⑦:@codex review のコメントに 👀 リアクションが付いた画面。 キャプション例:「ようやく👀が付いた。Codexがレビュー依頼を受け付けたサイン」 -->
数分後、Codex がレビューコメントを投稿しました。そして、その中身が想像以上に良かったのです。
結果:レビューの実力は、本物だった
仕込んだ5つの問題に対して、Codex の指摘はこうでした。
仕込んだ問題 | Codexの指摘 | 優先度 | 結果 |
|---|---|---|---|
APIキーのハードコード | Avoid committing the API key literal | P1 | ✅ |
any濫用・雑な変数名 | (指摘なし) | — | ❌ |
nullチェック漏れ | Guard nested user data before uppercasing | P2 | ✅ |
例外の握りつぶし | Propagate failures from risky fetch | P2 | ✅ |
無限ループの種 | Decrement the countdown loop counter | P1 | ✅ |
5つ中4つを的確に指摘。しかも、それぞれの指摘に「なぜ危険か」の理由がちゃんと付いていました。
nullチェック漏れには「
nullやuserを持たない payload が来たら、この行は TypeError を throw する」と、具体的な壊れ方まで説明無限ループには「
iが変わらないのでcountdownが永遠に print し続け、イベントループをブロックする」と、JS/TS 特有の影響まで言及



さらに驚いたのが、こちらが仕込んでいない問題まで発見したことです。fetch の結果を検証せずに使っている箇所について、「4xx/5xx のエラーレスポンスでも fetch は resolve するので、エラーを成功扱いしてしまう」と指摘してきました(Reject non-OK HTTP responses)。これは意図せず作ってしまった穴で、それを自力で見つけたことになります。
唯一スルーしたのは「any濫用・雑な変数名」でした。ただ、これは「バグ」ではなく「スタイル・可読性」の問題です。Codex は GitHub では高優先度のリスク(P0・P1)に絞ってコメントする設計なので、バグ・セキュリティは拾い、スタイルは流すという、実は実用的に妥当な振る舞いだったとも読めます(※これは挙動からの推測です)。
まとめ
「PR に @codex するだけ」という触れ込みは、半分本当で、半分は罠でした。
動かすまでが沼だった。 OAuth 連携だけでは動かず、bot の個別インストール、リポジトリ単位の有効化が必要。しかも設定が反映されない「サイレント失敗」が何度も起き、レビューが返ってくるまで1時間半以上かかった。
でも、動いたあとの実力は本物だった。 仕込んだ5つの問題のうち4つを優先度付きで的確に指摘し、こちらが仕込んでいない問題まで自力で発見した。スタイル系は流す傾向で、バグ・セキュリティに集中する。
結論としては、「セットアップさえ越えれば、実用に足る AI レビュアー」です。ただし、その「セットアップさえ越えれば」のハードルが、謳い文句から想像するよりずっと高い。これから試す人は、「@codexするだけ」では動かないことを前提に、bot のインストールとリポジトリ有効化まで一気にやってしまうのがおすすめです。
機能そのものより、そこに至る導線が最大の壁だった——というのが、今回いちばんの学びでした。
「PRに@codexするだけ」——のはずだった
OpenAI Codex には、GitHub のプルリクエスト(PR)を自動でレビューしてくれる機能があります。謳い文句はシンプルで、「PR に @codex とメンションするだけで、AI がコードをレビューしてくれる」。
普段から GitHub Actions でいくつかのリポジトリを回している身としては、これはありがたい。人間のレビュアーの代わり、あるいは補助になるなら使ってみたい——というわけで、実際に試してみることにしました。
この記事は、その検証ログです。先に言っておくと、結論にたどり着くまでが長かったです。「@codexするだけ」という触れ込みの裏に、それなりの沼がありました。結論を先に置かず、実際にハマった順番のまま記していきます。

準備:わざとツッコミどころを仕込んだPRを作る
レビュー能力を測るために、わざと問題を仕込んだコードを用意しました。これを PR にして、Codex が何を拾って何を見逃すかを見れば、レビュー能力が丸裸になります。
TypeScript プロジェクトに、こんな review_test.ts を追加しました。仕込んだ問題は5つです。
// 問題1: APIキーをハードコード(セキュリティ的にアウト) const API_KEY = "sk-test-1234567890abcdef"; // 問題2: 意味不明な変数名 + any濫用 function f(a: any, b: any) { const x = a + b; return x; } // 問題3: nullチェック漏れ(dの中身を検証せず深く辿る) function getUserName(d: any) { return d.user.name.toUpperCase(); } // 問題4: 例外を握りつぶす async function risky() { try { const result = await fetch("https://example.com"); return await result.json(); } catch (e) { // 何もしない } } // 問題5: 無限ループの種(i-- を書き忘れ) function countdown(n: number) { let i = n; while (i > 0) { console.log(i); // i-- を書き忘れている } }
検証用ブランチを切ってコミット・プッシュし、PR を作成。あとは PR のコメント欄で @codex review と打てば、レビューが返ってくる……はずでした。

沼1:@codex reviewしても、無音
PR のコメント欄で @codex review と送りました。@codex はちゃんと青いリンクになり、ホバーすると「OpenAI's coding agent」という説明も出る。実在する bot です。メンションのやり方は合っているはず。
ところが——20分待っても、何の反応もない。
bot のリアクション(👀)も、レビューコメントも、エラーメッセージすら出ません。完全な無音です。後で調べて分かったのですが、これは公式の issue でも数多く報告されている「サイレント失敗」という状態でした。設定が足りていないのに、エラーも出ないので何が悪いのか分からない。

ここで一度、別のリポジトリ(自分の個人アカウント配下)でも同じことを試しました。「他人のアカウントのリポジトリだから動かないのでは」と疑ったからです。しかし、自分のリポジトリでも無音。原因は所有者ではなく、別のところにありました。
沼2:原因は「連携しただけ」だった
調べて分かった原因はこうです。
最初にやった「GitHub アカウントとの連携(OAuth)」は、あくまでアカウント同士の紐付けにすぎません。@codex を bot としてリポジトリで動かすには、それとは別に、
Codex の GitHub App(bot)をリポジトリにインストールする
Codex 側の設定で、そのリポジトリのコードレビューを有効化する
この2つが必要でした。連携だけでは、bot はリポジトリに常駐していないので、メンションしても黙っているわけです。
設定画面(chatgpt.com/codex のコードレビュー設定)を開くと、案の定、自動レビューのトグルはすべて OFF。さらにリポジトリ一覧で検索しても「リポジトリはありません」と表示され、検証台のリポジトリが Codex に認識すらされていませんでした。
沼3:botをインストールしても、すぐには反映されない
コネクター設定から「ChatGPT Codex Connector」のインストール先を選び直しました。ここで、bot に与える権限の一覧が出ます。
注目したのは権限の中身です。pull requests への read & write 権限が含まれていました。レビューコメントを「書き込む」には、この write 権限が必須です。最初の OAuth 連携にはこれが無かった——これが無音の真の原因だったわけです。

リポジトリを Only select repositories で検証台だけに絞り、インストールを承認。ところが、設定画面に戻ってもリポジトリ一覧にはまだ出てこない。ここでもサイレントな反映ラグがありました。ページをリロードして、ようやくリストに登場。
リポジトリが登録できたら、その行で「自動コードレビュー」と「徹底的なコードレビュー」を ON にします。Codex のこの設定はトグルを切り替えた瞬間に自動保存で、保存ボタンはありません。

ここまで、トータルで1時間半以上。本来見たかった「レビュー能力」には、まだ一度もたどり着いていません。
ようやく、Codexが動いた
設定を終えて、PR で改めて @codex review。すると今度は——コメントに 👀 のリアクションが付きました。「レビュー依頼を受け付けた」というサインです。1回目は無音だったのに、bot インストール後の2回目には反応した。設定が効いた瞬間でした。
<!-- ▼画像⑦:@codex review のコメントに 👀 リアクションが付いた画面。 キャプション例:「ようやく👀が付いた。Codexがレビュー依頼を受け付けたサイン」 -->
数分後、Codex がレビューコメントを投稿しました。そして、その中身が想像以上に良かったのです。
結果:レビューの実力は、本物だった
仕込んだ5つの問題に対して、Codex の指摘はこうでした。
仕込んだ問題 | Codexの指摘 | 優先度 | 結果 |
|---|---|---|---|
APIキーのハードコード | Avoid committing the API key literal | P1 | ✅ |
any濫用・雑な変数名 | (指摘なし) | — | ❌ |
nullチェック漏れ | Guard nested user data before uppercasing | P2 | ✅ |
例外の握りつぶし | Propagate failures from risky fetch | P2 | ✅ |
無限ループの種 | Decrement the countdown loop counter | P1 | ✅ |
5つ中4つを的確に指摘。しかも、それぞれの指摘に「なぜ危険か」の理由がちゃんと付いていました。
nullチェック漏れには「
nullやuserを持たない payload が来たら、この行は TypeError を throw する」と、具体的な壊れ方まで説明無限ループには「
iが変わらないのでcountdownが永遠に print し続け、イベントループをブロックする」と、JS/TS 特有の影響まで言及



さらに驚いたのが、こちらが仕込んでいない問題まで発見したことです。fetch の結果を検証せずに使っている箇所について、「4xx/5xx のエラーレスポンスでも fetch は resolve するので、エラーを成功扱いしてしまう」と指摘してきました(Reject non-OK HTTP responses)。これは意図せず作ってしまった穴で、それを自力で見つけたことになります。
唯一スルーしたのは「any濫用・雑な変数名」でした。ただ、これは「バグ」ではなく「スタイル・可読性」の問題です。Codex は GitHub では高優先度のリスク(P0・P1)に絞ってコメントする設計なので、バグ・セキュリティは拾い、スタイルは流すという、実は実用的に妥当な振る舞いだったとも読めます(※これは挙動からの推測です)。
まとめ
「PR に @codex するだけ」という触れ込みは、半分本当で、半分は罠でした。
動かすまでが沼だった。 OAuth 連携だけでは動かず、bot の個別インストール、リポジトリ単位の有効化が必要。しかも設定が反映されない「サイレント失敗」が何度も起き、レビューが返ってくるまで1時間半以上かかった。
でも、動いたあとの実力は本物だった。 仕込んだ5つの問題のうち4つを優先度付きで的確に指摘し、こちらが仕込んでいない問題まで自力で発見した。スタイル系は流す傾向で、バグ・セキュリティに集中する。
結論としては、「セットアップさえ越えれば、実用に足る AI レビュアー」です。ただし、その「セットアップさえ越えれば」のハードルが、謳い文句から想像するよりずっと高い。これから試す人は、「@codexするだけ」では動かないことを前提に、bot のインストールとリポジトリ有効化まで一気にやってしまうのがおすすめです。
機能そのものより、そこに至る導線が最大の壁だった——というのが、今回いちばんの学びでした。
