Codexでghコマンドが実行できない理由と対処¶
この記事のポイント¶
- Codex(この環境)は安全のため「ファイルシステム」「ネットワーク」「権限」をサンドボックス制御しています。
ghは「ネットワーク通信」「認証トークン」「インストール有無」に依存するため、そのどれかが満たされないと失敗します。- 回避策は「承認付きで実行(ネットワーク権限)」「
GH_TOKEN/GITHUB_TOKENを設定」「未インストールならghを使わず REST API/curl へ置換」などです。
症状の典型例¶
gh: command not found(CLI 未インストール)authentication failed/HTTP 401/403(トークン未設定 or 権限不足)- 「ネットワークが使えないため失敗」や、Codex の実行ログで「エスカレーションが必要」
原因の整理¶
1) ツール未インストール¶
- Codex ランタイムに
ghがプリインストールされていない場合があります。 - この環境では任意のグローバルインストールが制限されることがあり、
ghの導入自体が不可なケースがあります。
2) ネットワーク制限(承認フロー)¶
- Codex はデフォルトでネットワークが制限されています。重要な外部通信(
ghによる API 呼び出し等)は「承認付き実行(escalated permissions)」が必要です。
3) 認証トークンの不足/不適切¶
ghはGH_TOKENなどのトークン設定が必要です。権限スコープ(repo, workflow など)が不足していると 403 になります。- フォークからの実行や外部イベントでは、セキュリティ仕様上、シークレットが渡らないため失敗します。
推奨の回避策・代替手段¶
A. まずは要件を見極める¶
- その処理は「ローカル(Codex)」で必要ですか? それとも「GitHub Actions 上」で実施すべきですか?
- 可能なら、GitHub Actions の
actions/github-scriptや REST API(curl)に寄せると、ローカルでghを使う必要がなくなります。
B. Codex 内で gh 相当を行う方法¶
ghの代わりに REST API を直接叩く(curl -H "Authorization: Bearer $GH_TOKEN" ...)。- 必要に応じて Codex の「承認付き実行」を使いネットワークを許可する(この手順はオペレーション時に明示的承認が求められます)。
- トークンは最小権限・最小期間で。複製/漏洩防止のためファイル保存は避け、環境変数で一時供給。
C. GitHub Actions にオフロードする¶
- レポジトリにワークフローを用意し、必要な操作は Actions 内で実行(
GITHUB_TOKEN利用、権限はpermissions:で最小化)。 - 例:Issue 作成は
actions/github-scriptで十分。ghを呼ぶ必要はありません。
D. gh を使いたい場合のチェックリスト¶
ghがインストールされているか(多くの Codex 環境では未インストール想定)- ネットワーク承認(エスカレーション)が取れているか
GH_TOKEN(またはGITHUB_TOKEN)が適切な権限で設定されているか- フォーク / 外部イベント起点ではないか(シークレットが渡らないケース)
具体例(REST API 置換)¶
Issue 作成(例):
curl -sS -X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer $GH_TOKEN" \
https://api.github.com/repos/<owner>/<repo>/issues \
-d '{"title":"Codex検証用","body":"gh不使用のRESTパス"}'
ワークフローの再実行(例):
curl -sS -X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer $GH_TOKEN" \
https://api.github.com/repos/<owner>/<repo>/actions/workflows/<file>.yml/dispatches \
-d '{"ref":"main"}'
ベストプラクティス¶
- セキュリティ第一:トークンは環境変数で一時的に注入、最小権限で運用。
- 再利用性:ローカルの
gh依存を避け、CI に寄せる設計(github-scriptなど)。 - 可観測性:失敗時ログに「権限不足」「ネットワーク拒否」「未インストール」のどれかを明示。
よくある質問(FAQ)¶
- Q. Codex で
ghをインストールできますか? - A. 環境によっては不可です。可能でもネットワーク承認や実行制限で運用コストが高くなるため、REST/Actions 代替を推奨します。
- Q.
GITHUB_TOKENとGH_TOKENの違いは? - A.
GITHUB_TOKENは Actions 内で自動供給されるトークン、GH_TOKENはgh/API 用に自分で用意する個人アクセストークン(PAT)です。用途と権限が異なります。
このドキュメントは Codex CLI(安全なサンドボックス環境)での実務的な運用を前提にまとめています。設計段階で「どこで何を実行するか」を切り分けることで、gh 依存を極小化し、安定した自動化パイプラインを構築できます。
関連ガイド¶
- Codex CLIネットワーク制限の解決策 —
ghが必要とするネットワークアクセスの制限を解除する方法 - Codex CLI承認モード完全ガイド — ネットワーク許可を含む承認ポリシーの設定
- Codex Planモード完全ガイド — Plan→Execute連携で安全にコマンドを実行
- Codex CLI入門ガイド — Codex CLIの基本操作とセットアップ
- Codex CLIベストプラクティス — セキュリティ・権限管理の実践パターン
- Codex CLI診断ログ完全解説 — トラブルシュート時のログ分析手法