コンテンツにスキップ

Codex環境でghが使えない理由と実務的な回避策(検証手順付き)

Codex CLI 完全ガイド

要旨

  • Codex CLIは安全性のため「ファイル操作・ネットワーク・権限」を段階的に制限します。
  • ghは「インストール」「ネットワーク」「トークン」の前提が必要で、いずれか欠けると失敗します。
  • 実務では「REST API直叩き」または「GitHub Actionsへ移譲」が堅実。この記事では両方の手順を提示し、Codex環境で実際に動く検証コマンドも付けています。

典型的な失敗パターン

  • gh: command not found(プリインストールなし)
  • HTTP 401/403GH_TOKENや権限不足)
  • ネットワーク未承認で外部通信が拒否(Codexの承認フローが必要)

回避アーキテクチャ

1) Codex内では「読み・編集・小さな検証」までに絞る(ネットワークは必要時のみ承認) 2) 書き込み系の外部作用(Issue作成/Workflow起動)は、GitHub Actionsに移譲(GITHUB_TOKENpermissions:で管理)

実務レシピ(Codex内でRESTを使う)

前提: ネットワークは必要時のみ承認。トークンは環境変数GH_TOKENに設定(最小権限)。

リポジトリ情報を取得(認証不要のGET)

curl -sS https://api.github.com/repos/<owner>/<repo> | head -n 5

ワークフローを手動トリガー(POST; 要GH_TOKEN

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"}'

安全運用ポイント: - トークンはファイル保存せず環境変数で一時注入 - 必要最小スコープのみ付与 - Codexでの外部通信は承認フローを通す(監査性)

GitHub Actionsへ移譲する例

  • Issue作成/ラベル付与/PR更新などは、actions/github-scriptや公式アクションで完結可能
  • Secrets/Permissionsはワークフロー側で集中管理し、Codex側では編集のみ

この環境での動作検証(手順)

  1. 読み取りの疎通確認(認証なしGET)
  2. 上記のGETを実行し、JSONが返ること(Codexで承認ダイアログが出た場合は承認)
  3. 書き込み系(任意)
  4. export GH_TOKEN=...(repoスコープ)
  5. 上記のdispatch APIを実行(対象ワークフローとブランチを自分のリポジトリに合わせる)

Codexの強みは「変更提案と安全運用」。外部作用はCIに委譲し、Codexは編集と最小限の検証にフォーカスする設計が、実務では最も安定します。

関連ドキュメント(内部リンク)