Search the alley

記事を検索

2文字以上でタイトル・カテゴリ・タグを検索できます。

AIにpush・deployさせる前に見るチェックリスト|git diff・build・秘密情報・本番反映の確認

AIエージェントにpushやdeployを任せる前に、git status、git diff、git diff --check、build、sitemap、upload、secret混入、本番反映の有無を確認するチェックリストです。

公開 2026.06.30 / 更新 2026.09.26

この記事のポイント

  • push前にgit statusとgit diffを見る
  • build/check/static HTML/sitemap/uploadを既存運用どおり確認する
  • 本番反映や秘密情報が混じるpushは人間確認にする

実行・push・deployの境界を分ける

知らないrepoでは、読み取り、限定実行、commit、push、deployを別の段階として扱います。AIがsetupを通したことと、pushや本番反映まで任せてよいことは別です。

確認観点この記事で扱うこと詳しく読む
読み取りrepo構造と危険箇所の確認で止めるai-coding-unknown-github-repo-safety-checklist
限定実行人間が指定したコマンドだけ許可するai-agent-setup-command-safety
公開前diff、build、secret、sitemap、uploadを確認するai-agent-push-deploy-review-checklist
間接指示外部ページやREADMEの命令でpushしないindirect-prompt-injection-ai-coding-agent

AI coding agent安全運用の補足FAQ

AIがbuildまで成功させたらpushしてよいですか?

build成功は必要条件の一つです。push前にはgit diff、秘密情報、生成物、CIやGitHub Actionsの本番影響、push先branchを別に確認します。

push・deploy前は、git以外の退避先も確認する

pushやdeployの前にgit diffを見るのは基本です。加えて、未追跡ファイル、画像素材、生成済みHTML、uploadフォルダ、ローカル設定など、gitだけでは戻しにくいものは外付けSSDなどへ退避してから公開前レビューへ進むと、戻し方を選びやすくなります。

Workで調査、Codexで実装、人間がdeployを判断する

ChatGPT Workで調査と企画をまとめても、Codexの実装、build / check、git diff、commit / push、本番deployは別の境界です。新desktop appに入口が統合されても、push成功と本番反映を同じ完了条件にしません。

Auto-reviewはpermission grantではなく、承認者の置き換え

Auto-reviewでは、main agentがread-onlyまたはworkspace-writeのsandbox内で作業し、境界を越えるapproval requestが出たときだけ、`approvals_reviewer = "auto_review"`なら別のreviewer agentが判断します。approvedなら処理が続き、deniedならより安全な代替策を探すか停止します。writable_rootsを広げたりnetworkを有効にしたり、protected pathを弱めたりする設定ではありません。

確認点公式Docsの説明push前の判断
適用条件interactive approvalがあるときに動く。`on-request`や該当promptを残すgranular policyが対象で、`never`ではreview対象がないAuto-reviewを有効にしたつもりでも、現在のapproval policyで実際に対象になるかを確認する
review対象sandbox外へのshell/exec、blocked network、writable root外のedit、承認が必要なMCP/app、Computer Useの新しいwebsite/domainroutineなsandbox内操作は別に扱い、境界を越える操作だけをreview対象として棚卸しする
Computer Useapp approvalはuserへ直接表示され、Auto-reviewが置き換えない画面操作や新規domainの承認をreviewer agentの承認と混同しない
拒否denied actionの同じ目的をworkaroundや間接実行で続けず、materially saferな代替策か停止へ進む拒否を通常のsandbox errorとしてretry loopに入れない
設定default policy、managed `guardian_policy_config`、userの`[auto_review].policy`がある。managed requirementsが優先するpolicyを変える前に組織設定、既定policy、transcriptの秘密情報を確認する

Auto-reviewを公開作業に使う前の停止条件

  • Auto-reviewのapproval成功を、build成功、test成功、diff確認、secret確認、生成物確認、push可、deploy可と同一視しない。
  • Auto-reviewは境界を越えるactionだけを評価し、adversarialまたは通常と違うcontextで誤る可能性があるため、sandbox設計、monitoring、組織policyを残す。
  • 拒否後は同じ目的を別のcommand、MCP、外部送信、shell wrapperで迂回せず、より安全な代替策を提示できなければ停止する。
  • denial circuit breakerは、同じturnで3回連続または直近50 review中10回のdenialでinterruptする。loop回数を増やして突破しない。
  • `/approve`のoverrideは、最近の特定denied actionを同じcontextで1回retryする狭い承認として扱い、似た将来のactionへの包括許可とは考えない。
  • review transcriptは既定で`~/.codex/sessions`へ保持されるため、private data、secret、credentialがログに残る前提で入力と出力を確認する。
  • review量を減らすためにbroadなwritable_rootsやprefix ruleを足さず、必要なscratch directoryやcommand prefixだけを狭く設計する。

Codex Auto-reviewのFAQ

Auto-reviewを使えばfull accessでも安全ですか?

安全とは限りません。Auto-reviewはsandbox境界の承認者を置き換える仕組みで、permission grantではありません。sandbox、filesystem、network、MCP、secret、diff、test、公開判断の設計は別に残します。

Auto-reviewがapproveしたらpushしてよいですか?

そのままpush可とは判断しません。Auto-reviewが扱うのは特定のboundary-crossing actionのapprovalです。push前にはbranch、diff、secret、生成物、CI、本番deploy条件を人間が確認します。

Codex GitHub Actionは、workflow全体の安全性を保証しない

公式READMEのPR review例では、PRのmerge commitをcheckoutし、base・head refを明示的に取得し、`contents: read`でCodexを実行します。PR title・body・commit message・AGENTS.md・画像はprompt injectionの入力面になり得るため、PRの存在やラベルだけを根拠に広い権限を渡さず、レビュー対象の範囲と返却先を限定します。

確認点公式README / Security guideの要点開始前の判断
trigger既定ではrepoへのwrite accessを持つuserがActionを実行でき、`allow-users`、trusted botのallowも追加できる外部PR・issueを起点に広く実行せず、許可するuser・botを個別に列挙する
checkoutPRのmerge commitを明示checkoutし、base・head refを取得、`persist-credentials: false`と`contents: read`を例示するhead branchの別内容をレビュー対象に混ぜず、Git credentialを後続へ残さない
prompt入力PR title・body、commit、AGENTS.md、画像などもCodexが読むuntrusted inputになり得るGitHub expressionをshellへ直接埋め込まず、`env`へ渡してshell変数をquoteする
permission`:read-only`または`:workspace`などのpermission profileを選べる。profileとlegacy `sandbox`は同時に使わないレビューだけならread-only、checkout編集が必要なときだけworkspaceを選び、Codex CLI互換性も確認する
runner権限Linux/macOSの`drop-sudo`が既定で、`unprivileged-user`も選べる。read-onlyでもhostのsudoが残ればAPI keyを守れない場合があるCodexにfilesystem権限を渡す前にprocess privilegeとsecretの見える範囲を確認する
後続stepCodexがprocessを残したり、他Actionのsourceや`.git/hooks`を書き換えたりする可能性があるため、Actionをjobの最後に置くことを推奨するCodex後にsecret利用、release、deploy、特権処理を続けず、結果は別jobへ渡す
network / install`:workspace` profileはnetwork accessを与えない。依存取得が必要ならCodex stepより前に準備する依存取得とAI実行を分け、networkを有効にする理由・domain・ログを先に確認する

GitHub Actionsへ組み込む前の停止条件

  • `openai/codex-action@v1`を使う場合も、API keyはsecretに置き、prompt、PR本文、issue本文、branch名を無加工でshellへ連結しない。
  • レビュー専用jobはjob-level permissionsを最小にし、`contents: read`、merge commit、base/head SHA、`persist-credentials: false`を確認する。
  • 新しいpermission profileを選ぶなら、`:read-only`または`:workspace`とCodex CLIの対応versionを確認し、legacy `sandbox`や`sandbox_mode`を同じworkflow/configへ混在させない。
  • Linux/macOS runnerでは`drop-sudo`または管理済みの`unprivileged-user`を優先し、read-only sandboxだけでAPI keyが守られると判断しない。
  • Codex Actionはjobの最後に置き、完了後に特権step、secret利用、他Action、hook、release、deployを続けない。
  • `final-message`を別jobへ渡しても、レビュー結果はmerge、push、deployの承認ではない。人間がdiff、CI、secret、生成物を確認する。
  • Windows hosted runnerでは公式README上`safety-strategy: unsafe`だけが対応するため、Linux/macOSと同じ安全境界と見なさず、runner選択から見直す。

Codex GitHub ActionのFAQ

read-only sandboxとnetwork offならAPI keyは安全ですか?

十分とは限りません。公式Security guideは、host側にpasswordless sudoが残るとread-onlyやnetwork制限だけではprocess memoryなどからAPI keyへ到達し得ると説明しています。safety strategy、runner、secret、後続stepをまとめて確認します。

Codex Actionの後にdeploy stepを置いてよいですか?

原則として避けます。公式Security guideは、Codexがprocess、他Actionのsource、`.git/hooks`などを残りのjobへ影響させる可能性を理由に、Actionをjobの最後へ置くことを推奨しています。結果は別jobへ渡し、deploy可否は別の人間確認に分けます。

permission profileとsandboxを両方設定できますか?

混在させません。公式READMEではpermission profileとlegacy sandboxはcomposeせず、両方を指定するとAction開始前に失敗します。loaded configや`codex-args`に残る`sandbox_mode`も確認します。

/reviewのscopeとGit stateを分ける

確認点公式Docsの現行案内Windows・再開時の確認
利用条件review paneと /review はGit repository内で使う。プロジェクトがGit repoでなければreviewを開始できず、アプリ側でrepo作成を促される場合がある対象path、Git root、remote、branch、statusを確認する。作業フォルダがGit repoであることと、レビュー対象が意図したrepoであることを分けて記録する
review scopebase branchの差分、未commitの変更、指定commit、custom criteriaなどを選べる。paneの既定はUnstagedで、Staged・Commit・Branch・Last turnも選択できるbase branch、uncommitted、staged、commit、branch、Last turnを混同しない。複数repoを添付した場合は、scopeに応じて選択repoと対象branchを再確認する
見える変更review paneはCodexが行った変更だけでなく、Git repositoryの現在状態を反映し、ユーザー変更を含む選択範囲を確認する自分の差分だけと思い込まず、status・diff・untracked・stagedを先に棚卸しする。保護対象、既存変更、release-artifactsをレビュー対象とコミット対象から分ける
作業ツリーと権限review pane、CLI、IDEの /review はfindingを報告し、作業ツリーを変更しない。修正を依頼した場合は通常のsandbox・approval設定で別の変更操作として実行するレビュー完了を修正完了・test成功・stage・commit・push・deployの証明にしない。修正時は通常の承認境界、branch、diff、生成物parityを再確認する
deliveryとmodelreview結果をcurrent chatに届けるかDetached review chatに分けられる。review_modelやchatgpt.reviewDeliveryで表示・モデルの設定を調整できるdeliveryやmodelの設定を変えてもsandbox、approval、MCP、Git権限、本番反映の境界は変わらない。設定変更後も同じ検査を実行する
PR・inline feedbackGitHub accessとPR branchが揃えばPR contextやcommentsを確認できる。inline commentはreview guidanceであり、修正後に明示的なfollow-upとdiff確認を行うPR commentの読了と修正の採用を分ける。GitHub CLIのinstall・auth、外部remote、pushは資格情報・外部影響を伴う別の確認点として扱う

Windowsでreviewを再開する確認順

  • 対象projectがGit repo内にあることを確認し、absolute path、Git root、remote、current branch、status、diff、untracked、staged、保護対象ファイルを記録する。別repoの同名pathや前回のreview結果を現在状態と推測しない。
  • レビューの目的を、base branch、uncommitted、commit、branch、Last turn、custom criteriaのどれかに限定し、PR番号・branch・commit・対象file・確認観点をpromptで明示する。複数repoでは選択repoを先に固定する。
  • Unstagedだけを見て完了にせず、必要ならStaged、Commit、Branchの範囲を個別に確認する。review paneのfindingはGit全体の選択範囲に対する指摘であり、Codexの今回の編集だけに限定されない。
  • findingやinline commentは、再現条件・対象行・影響・根拠を確認してから修正を依頼する。follow-upでは修正範囲を明示し、作業ツリー、diff、test・build結果、生成物を再確認する。
  • 修正後は通常のsandbox・approvalでstage、revert、commit、pushを判断する。FTP、DNS、CDN、production、Search Consoleはreviewの完了とは別の手動gateとして残す。

ChatGPT/Codex Code reviewのFAQ

/reviewは作業ツリーを変更しますか?

review自体は選択した差分を読み、優先度付きのfindingを返すだけで、作業ツリーを変更しません。修正を依頼した場合は別の通常作業として、sandbox・approval・diff・testを確認します。

review paneはCodexが今回変更したファイルだけを見ますか?

いいえ。Git repositoryの現在状態と選択したscopeを対象にするため、ユーザー変更や既存の未commit変更も含みます。status、staged、unstaged、untrackedを先に確認します。

base branchとuncommittedは同じreviewですか?

別のscopeです。base branchとの差分、未commit変更、指定commit、branch、Last turnなどを目的に応じて選び、レビュー結果を混ぜないようにします。

reviewのfindingが出なければtestやrelease gateも通ったと言えますか?

言えません。reviewのfinding、構文・lint・test・build、生成HTML・sitemap・upload parity、Git commit・push、production反映は別の確認です。

Detached reviewやreview_modelを設定すると権限も変わりますか?

変わるとは扱いません。delivery先やreview modelの設定と、sandbox・approval・MCP・Git・外部サービスの権限は別です。設定変更後も同じ安全境界を確認します。

関連記事