AIエージェントが自律的にコードを書き、テストを回し、デプロイまで完了させる。2026年現在、無人運用は現実的な選択肢だ。Claude Codeを活用し、AIが作業を進める恩恵は大きい。
しかし、避けて通れないのがセキュリティの問題だ。人が画面の前にいない状況で、AIが破壊的なコマンドを実行したり、機密情報を外部に送信したりするリスクを防ぐ必要がある。単なる「許可」か「拒否」かの二択では不十分だ。複数の防御層を重ねる「多層防御」の考え方が不可欠になる。
この記事では、AIエージェントを安全に、そして自律的に稼働させるための具体的なTipsを10個にまとめて紹介する。AIによる自動開発を本格化させるために、内容を把握する。
SNS運用を自動化しませんか?
ThreadPostなら、投稿作成・画像生成・スケジュール管理までAIがサポート。
1. Bash AST検査ツール「Vetol」による厳格なコマンド制御
AIエージェントにコマンド実行を許可する際、特定の文字列を禁止する正規表現を使う手法は危険だ。攻撃者はコマンド置換や論理演算子を駆使して、チェックを潜り抜ける。
導入を検討すべきツールが、BashのAST(抽象構文木)を解析する「Vetol」だ。これはBashの構文を深く読み解き、隠されたコマンドまで抽出して検査する。例えば、エコーコマンドの影に隠された削除コマンドや、条件分岐の中に仕込まれた不正なプッシュ操作も見逃さない。
単純なパターンマッチングではなく、プログラムの構造そのものを解析することで、バイパス手法を無効化できる。無人運用において、この「見えない脅威」を可視化するステップは極めて重要だ。設定はJSON形式で管理できるため、チームでの共有も容易になる。
2. PreToolUseフックによる動的バリデーションの実行
AIエージェントがツールを実行する直前に、独自のスクリプトを割り込ませる「PreToolUseフック」の活用は必須だ。これは、エージェントがコマンドを実行する瞬間に、その妥当性をチェックする検問所のような役割を果たす。
フック機能を使えば、単にコマンドを拒否するだけでなく、実行環境の状態に応じた動的な制御が可能になる。例えば、本番環境への接続が有効な時間帯だけ特定の操作を許可する、といった柔軟なルールを設定できる。
ただし、フック自体の設計ミスが脆弱性になるリスクもある。フック内で実行するバリデーションスクリプトは、可能な限りシンプルで堅牢なものにする必要がある。ここを疎かにすると、安全網そのものが攻撃の足場にされる恐れがある。
3. 「dontAsk」モードによる承認プロセスの自動化と安全性の両立
無人運用の最大の壁は、AIがユーザーに許可を求める「確認ダイアログ」で処理が止まることだ。夜間バッチでエージェントを回しているときに、承認待ちが発生しては自動化の意味がない。
ここで使うべきなのが「dontAsk」モードだ。これは、通常なら確認を求める場面を、自動的に「拒否(deny)」に変換する設定だ。一見すると不便だが、これが安全性を担保する鍵になる。
事前に明示的に許可(allow)した安全なコマンドだけをノータイムで通し、それ以外はすべて「人がいないため実行しない」というスタンスを取る。全許可フラグである「dangerously-skip-permissions」を使うのは避けるべきだ。それは安全網を自ら捨てる行為に等しい。
4. 脅威の6類型に基づいた多層防御戦略の構築
AIエージェントのリスクを漠然と捉えてはいけない。脅威を具体的に分類し、それぞれに適切な対策を割り当てる必要がある。情報の漏洩、認証情報の窃取、外部への不正通信、履歴の破壊、git管理外データの消失、そして可逆的なローカル変更の6つに分けて考えるのが有効だ。
この中で、特に警戒すべきは「gitで戻せないもの」への攻撃だ。APIキーの窃取やデータベースの物理削除は、gitのコミットログを遡っても解決しない。
対策としては、設定ファイルによる静的な制限、フックによる動的な検証、OSレベルのサンドボックス、そして最終的なバックアップという4つの層を重ねる。一つの層が突破されても、次の層で食い止める。この執拗なまでの備えが無人運用を支える。
<!-- IMAGE_1 -->
5. 設定ファイルの実行命令化への強い警戒
Claude Codeなどのエージェントは、プロジェクト内の設定ファイルを読み込んで動作する。ここにはフックの設定や環境変数の定義が含まれるが、これを単なる設定と見なしてはいけない。これは実質的に、エージェントに対する「実行命令」そのものだ。
悪意のあるリポジトリをクローンしてエージェントを起動した瞬間、設定ファイルに仕込まれた不正なコマンドが実行されるリスクがある。これはサプライチェーン攻撃の一種であり、非常に防ぎにくい。
信頼できないソースから入手したコードを扱う際は、まず設定ファイルの中身を確認する。エージェントを起動する前に、見慣れないフック設定や、不審な外部通信の定義がないかを点検することが、環境を守る第一歩になる。
しんたろー:
Claude Codeでコードを書く際、設定ファイルの扱いは慎重になるべきだ。新しいライブラリを試すとき、必ず設定ファイルに怪しい記述がないか確認してからエージェントを立ち上げる。
6. 組み込みRead-onlyコマンドの性質を正しく理解する
すべてのコマンドを一つずつ許可設定するのは現実的ではない。多くのAIエージェントには、標準で「安全」と見なされる「Read-only」なコマンドが定義されている。例えば「ls」や「cat」、「grep」などがこれに該当する。
これらのコマンドは、システムの書き換えを行わないため、標準では確認ダイアログなしで実行できる。自分の使っているツールが、どのコマンドを安全と見なしているかを正確に把握しておくことが重要だ。
不要な許可設定を書き連ねると、設定ファイルの可読性が下がり、本当に制限すべき危険なコマンドを見落とす原因になる。標準機能を信じつつ、それ以外の「破壊の可能性があるコマンド」に注力して制限をかけるのがスマートな運用術だ。
ここまで読んだあなたに
今なら無料で全機能をお試しいただけます。設定後はAIが投稿案を毎日生成。確認して選ぶだけ。
7. サンドボックス環境の活用による被害範囲の限定
万が一、エージェントが不正なコマンドを実行してしまった場合に備え、実行環境そのものをOSから隔離する「サンドボックス」の利用は極めて有効だ。Dockerコンテナ内や専用の仮想マシンでエージェントを動かすことで、ホストマシンへの影響を最小限に抑えられる。
ファイルシステムへのアクセスを特定のディレクトリだけに制限したり、ネットワーク接続を遮断したりすることで、情報の持ち出しや外部からの攻撃を物理的に防ぐ。
無人運用においては、この隔離環境の構築が「最後の砦」になる。環境構築の手間はかかるが、一度仕組みを作ってしまえば、これほど心強い味方はいない。特に機密性の高いデータを扱うプロジェクトでは、サンドボックスなしの運用は避けるべきだ。
8. 定期的なバージョン管理とセキュリティパッチの即時適用
AIエージェントのツール自体も日々進化しており、新たな脆弱性も発見されている。過去には、ユーザーの承認前にコマンドが実行されてしまう深刻な欠陥が報告されたこともある。
対策は極めてシンプルだ。常に最新バージョンを使い続けること。開発の現場では、ツールのアップデートによる挙動の変化を嫌ってバージョンを固定しがちだが、AIツールの世界ではその判断が命取りになる。
脆弱性情報は公式の発表や開発コミュニティで常にウォッチする。無人運用をスケジューラで回しているなら、その実行フローの中に「ツールのバージョンチェック」を組み込むのも一つの手だ。古いままで動かし続けることのリスクを正しく認識する。
<!-- IMAGE_2 -->
9. /permissionsコマンドによる権限設定の定期的な可視化
設定ファイルが増えてくると、現在どのコマンドが許可され、どの範囲までアクセスが可能なのかが把握しにくくなる。そんなときは、Claude Codeなどのツールに備わっている「/permissions」のような確認コマンドを活用する。
現在の権限設定を一覧で表示し、意図しない許可が与えられていないかをチェックする。これは、セキュリティの「健康診断」だ。
特に、プロジェクトを跨いで設定をコピーしたときなどは、不要な権限が残りがちになる。週に一度、あるいは大きな機能開発を始める前には、現在の権限状況を可視化して、最小権限の原則が守られているかを確認する習慣をつける。
10. ホワイトリスト方式による「デフォルト拒否」の徹底
セキュリティの基本中の基本だが、最も効果的なのが「ホワイトリスト方式」の採用だ。「これとこれは禁止」というブラックリストを作るのではなく、「これ以外はすべて禁止」というスタンスで設定を組む。
無人運用では、想定外の事態が起きたときに「止まる」のが正解だ。「動いてしまって事故になる」よりは、エラーで止まって翌朝に人間が対応するほうが遥かにマシだ。
最初は不便に感じるかもしれないが、必要なコマンドを一つずつ丁寧に許可していく過程で、開発フローに必要な権限が整理されていく。この地道な積み重ねが、最終的には鉄壁の防御へとつながる。
しんたろー:
自身のサービス開発でも、このホワイトリスト方式を徹底している。最初は面倒だが、一度設定が固まれば、無人運用でも安心して運用できる。
運用形態別のセキュリティ対策比較
無人運用と、人が介在する在席運用では、取るべき対策の優先順位が異なる。以下の表にその違いをまとめる。
| 比較項目 | 在席運用(手動) | 無人運用(自動) | 対策のポイント |
| :--- | :--- | :--- | :--- |
| 主な防御壁 | 人による承認(ask) | 静的な境界設定(allow/deny) | 無人では人の判断を介さない設計にする |
| コマンド制限 | 柔軟な判断が可能 | Vetol等による厳格なAST検査 | 曖昧さを排除した構文解析が必須 |
| リスク許容度 | 多少のミスは即座に修正可能 | ミスが大事故に直結する | 多層防御による被害最小化を優先する |
| 推奨モード | 通常モード(prompt有り) | dontAskモード(自動拒否) | 承認待ちによる停止を防ぐ |
| 環境隔離 | 必須ではないが推奨 | サンドボックス化が必須 | 物理的な隔離でホストを守る |
<!-- IMAGE_3 -->
AIエージェント運用に関するFAQ
Q1: AIエージェントが勝手にファイルを消さないか心配だ。
エージェントの権限設定ファイルで、破壊的なコマンドを明示的に拒否リスト(deny)に登録する。特に「rm」や「git push -f」などは、無条件で拒否するように設定するのが基本だ。さらに、Vetolのようなツールを導入すれば、コマンドの裏側に隠された削除命令も検知できる。gitによる履歴管理は前提だが、それ以前に「実行させない」仕組みを作ることが重要だ。
Q2: 無人運用で承認ダイアログが出ると処理が止まってしまう。
その問題を解決するために「dontAsk」モードを活用する。これは、確認が必要な操作を自動的に「拒否」として扱う設定だ。これを使えば、承認待ちでプロセスがハングアップすることはない。ただし、必要な処理まで拒否されないよう、業務で使う安全なコマンドについては、あらかじめ許可リスト(allow)に登録しておく必要がある。
Q3: 設定ファイルが危険だと言われる理由は何だ?
AIエージェントの設定ファイルには、ツール実行時に自動で動くコマンドや環境変数を定義できるからだ。もし悪意のあるリポジトリをクローンしてそのままエージェントを起動すると、その設定ファイルが読み込まれ、PC上で攻撃者のコードが勝手に実行される恐れがある。信頼できないソースのコードを扱う際は、エージェントを動かす前に必ず設定ファイルの中身を点検する。
Q4: どのコマンドを許可して、どれを拒否すべきか基準がわからない。
まずは「Read-only」なコマンドを把握することから始める。ファイルの読み取りや状態確認だけのコマンドは、多くのツールで標準的に安全と見なされている。それ以外の「書き込み」や「削除」を伴うコマンドは、原則としてすべて拒否からスタートするホワイトリスト方式を推奨する。開発を進める中で、どうしても必要なものだけを一つずつ許可リストに加えていく。
Q5: gitで管理していれば、万が一の時も安心ではないのか?
gitはコードの変更履歴を戻すには有効だが、万能ではない。例えば、APIキーなどの機密情報が外部に送信された場合、gitでコードを戻しても流出した事実は消えない。また、OSのシステムファイルを破壊されたり、データベースを直接操作されたりした場合も、gitの履歴だけでは復旧できない。gitによる復旧は「最後の手段」と考え、その手前で実行を阻止する多層防御を構築する。
まとめ
AIエージェントの無人運用は、開発効率を爆発的に高める。しかし、その力を安全に引き出すためには、これまで以上に厳格なセキュリティ意識が求められる。
- Bash AST検査ツール「Vetol」でバイパスを防ぐ
- PreToolUseフックで実行直前のバリデーションを行う
- dontAskモードで承認待ちを排除し、安全に倒す
- 多層防御で単一障害点をなくす
- 設定ファイルをコードとして警戒する
これらのTipsを一つずつ実践することで、開発環境はより強固なものになる。AIを信頼しすぎるのではなく、適切な境界線を引く。それが、2026年を生き抜くエンジニアの必須スキルだ。
まずは自分の環境で権限設定を確認し、不要な許可を削るところから始める。小さな一歩が、大きな事故を防ぐことにつながる。

この記事が参考になったら、ThreadPostを試してみませんか?
投稿作成・画像生成・スケジュール管理まで、AIがサポートします。
ThreadPostをもっと知る