プロローグ:外から守るだけで、十分なのか
AIガバナンスや家庭内のITインフラを整備していたとき、ふと思いました。
日々使っているAIエージェントの安全性は、本当に担保されているのだろうか。
外部からの不正アクセスや情報漏洩には、気を配ってきた。アクセス権限、バックアップ、データの保管場所。できる範囲で、一つひとつ確認してきた。では、内部で動いているAIエージェントはどうだろう。
AIエージェントは、質問に答えるだけの存在ではありません。ファイルを読み、プログラムを実行し、設定を変更し、場合によっては外部サービスとも連携する。便利だから、日常的に使っている。しかし、与えている権限や作業範囲を、自分はどこまで把握しているのか。設定したつもりの制限は、本当に効いているのか。
そう考え、普段開発に使っているAIエージェントに、自身の作業環境を点検してもらうことにしました。見えてきたのは、想定していなかった設定や、過去の作業の痕跡です。
だが、もっとも印象に残ったのは、発見した問題そのものではない。
AI自身も、実際に動かしてみなければ正解がわからないことがある。その当たり前の事実を、AIエージェントとの共同作業の中で、改めて実感しました。
1. AIエージェントに、自分の作業環境を調べてもらう
今回の監査対象は、日常的にWebアプリケーションなどの開発に使っているAIエージェント、Claude Codeです。
普段は、やりたいことや改善したいことを伝え、AIと相談しながら実装を進めています。実に便利です。
しかし、この便利さは、AIエージェントがパソコン内のファイルや各種ツールにアクセスできることで成り立っている。では、どこまでアクセスできるのか。過去に与えた許可は、どうなっているのか。普段の開発に支障はなかったが、改めて調べたことはありませんでした。
そこで、AIエージェント自身に、作業環境の監査を依頼しました。調べる対象は、作業ディレクトリ、ファイルへのアクセス権限、操作許可の設定、外部サービスとの接続状況など。
もちろん、調査にも一定の権限が必要で、その安全性を確かめるために、調査するAIにも権限を与える。なかなか興味深い構図です。
2. 何も起きていなくても、何かが残っている
監査を進めると、いくつか想定外の状態が見つかりました。
一つは、過去の作業で作られたGitの管理情報が、意図しない場所に残っていたこと。Gitは、プログラムなどの変更履歴を管理する仕組みで、通常は管理したいプロジェクトごとに使う。しかし、今回見つかったものは、本来管理するつもりのなかった広い範囲に関係していた。
幸い、外部への送信先は設定されておらず、変更履歴の確定記録(コミット)もなかった。とはいえ、不要な管理情報が残っていたことは事実。削除してしまう前に、内容と影響範囲を確認し、隔離することにしました。
もう一つは、過去の開発作業で設定した操作許可。当時は作業を円滑に進めるために与えた許可でも、現在の用途に照らすと、範囲が広すぎるものがあった。ソフトウェアの開発では、作業が進むにつれて設定やファイルが増えていく。AIエージェントを使う場合も同じで、便利にするための設定が、いつの間にか蓄積している。
重要なのは、重大な被害を発見した、という話ではないこと。「問題なく使えている」と「意図した状態が維持されている」は、必ずしも同じではない。それを確認できただけでも、監査を行った意味はありました。
3. AIが考えた対策を、AIが実行できない
発見した設定を整理し、必要な制限を加えることにしました。AIエージェントは設定項目を調べ、変更案を提示する。説明を読む限り、筋は通っている。
では、実際に変更してみよう。ところが、AIエージェントが設定ファイルを書き換えようとすると、保護機構によって操作が拒否されました。安全性を高めるための制限が、設定ファイルそのものの変更にも及んでいたためです。
ある意味では、保護機構が働いているということです。しかし、AIが提示した手順は、そのままでは実行できなかった。
制限を回避する方法を探すことも、技術的には選択肢になり得る。だが今回は、それをしなかった。保護のために設けた制限を、保護設定の変更を理由に迂回してしまっては、何のための制限なのかわからない。
そこで、必要な設定変更は人間が手作業で行い、AIには変更内容の確認を担当してもらいました。人間が編集し、AIが点検する。いつもとは少し違う役割分担になった。
ここで気づいたことがある。AIは仕様を調べ、妥当と思われる手順を提案できる。しかし、その手順が「目の前の環境で実行できるかどうかは、別の問題」なのだ。
4. 「正しいはずであること」と「実際に正しいこと」は違う
AIエージェントは、膨大な知識をもとに説明し、推論できます。公式の仕様を調べ、設定方法を組み立てることもできる。しかし、実際の動作は、ソフトウェアのバージョン、利用環境、既存の設定、権限の状態などによって変わり得る。
仕様上は正しい。手順も合理的である。それでも、実行すると想定外の結果になることがある。
これは、AIに限った話ではありません。人間のエンジニアも、資料を読み、コードを書き、「これで動くはずだ」と考えて、実際に動かしてみる。動かなければ原因を調べ、修正する。開発とは、その繰り返しです。
ただし、AIには少し厄介な特徴があります。説明が非常に流暢です。筋道の通った説明を聞くと、こちらもつい「なるほど」と納得してしまう。だが、説明に納得したことは、動作を確認したことではない。
今回も、設定ファイルの書式が正しいことや、意図した変更が記述されていることは確認できました。しかし、それだけで、設定した制限が実際の操作に対して有効に働くと断定することはできない。新しい設定を読み込ませた後、対象の操作が許可されるのか、拒否されるのか。それを確かめて、初めて実効性を判断できる。そして目的通りの出力を得られるか。そこまで確認して初めて、設定の正当性を認めることができる。
今回、その一部は未検証のまま残した。「設定した」と「確認した」を混同しないためである。
私なりに整理すると、確認には三つの段階があります。
- 第一段階:仕様として正しいか
- 第二段階:実際に動くか
- 第三段階:目的どおりに機能しているか
この三つは似ているようで、違う。AIが第一段階で正しい答えを出しても、残りの二つまで保証されたわけではない。
だからこそ、AIも実際に動かしてみなければ、正解がわからないことがあるわけです。
5. AIに監査を任せたからこそ、わかったこと
今回の監査では、調査も、原因の切り分けも、対策の検討も、かなりの部分をAIエージェントに担当してもらいました。人間が一つひとつファイルを調べ、設定を読み解いていれば、相応の時間がかかったはずです。その意味で、AIエージェントの能力は大いに役立った。
一方で、AIの提案がそのまま実行できない場面があり、設定変更は人間が引き受ける必要があった。最終的な動作確認が済んでいない項目も残った。
これを「AIは頼りにならない」と受け取るのは、少し違うと思います。AIエージェントを実務で使うとは、こうしたやり取りを含めて仕事を進めることだろうと思います。AIが調べ、仮説を立てる。実際に試し、結果を確認する。必要なら修正する。そして、確認できていないことは、そのまま残す。
人間がすべての作業をする必要はない。しかし、AIの説明を聞いて、結果まで保証されたことにするわけにもいかない。大切なのは、AIを疑い続けることではなく、推論と事実の境界を見失わないことだと思います。
エピローグ:AIエージェントの安全性設定は、一度で終わりではない
監査を終えて、もう一つ考えました。AIエージェントの安全性は、一度設定を整えれば完成するものなのだろうか。おそらく、そうではない。
新しいプロジェクトを始めれば、扱うファイルが変わる。外部サービスと接続すれば、利用できる機能が増える。ソフトウェアが更新されれば、動作や設定項目が変わることもある。作業を便利にするために、許可を追加することもある。利用環境は、少しずつ変化していく。今回見つかった過去の設定や管理情報は、そのことを示していました。
だからといって、常に厳しい制限をかけ、何をするにも人間が介入する状態が最善とは思いません。それでは、AIエージェントを使う意味が薄れてしまう。必要なのは、業務に適した権限を与え、その状態を把握し、変化に応じて見直すことです。一般的な業務システムの運用管理と、何ら変わりはありません。
便利な仕組みを作ることと、安心して使い続けられる仕組みを作ること。その両方が必要なのだと思います。
そして、今回の監査は、少し意外な問いを残しました。
AIエージェントの操作を自動で許可するのは不安だから、人間の承認を挟む。それで、本当に安全性は高まるのか。
この問いについては、もう少し考えてみたいと思います。
まとめ
- AIエージェント(Claude Code)に、自身の作業環境を監査してもらった。調べたのは、作業ディレクトリ、ファイルへのアクセス権限、操作許可の設定、外部サービスとの接続状況など
- 過去の作業で作られたGitの管理情報や、範囲が広すぎる操作許可が残っていた。重大な被害ではないが、「問題なく使えている」と「意図した状態が維持されている」は同じではない
- AIが提案した設定変更は、保護機構に拒否されて実行できなかった。制限を迂回せず、人間が手作業で変更し、AIには内容の点検を任せた
- 「仕様として正しい」「実際に動く」「目的どおりに機能する」は別の段階。AIの説明が流暢でも、動作を確認したことにはならない。今回も、一部は未検証のまま残した
- AIへの権限付与は、一度設定して終わりではない。環境の変化に応じて、状態を把握し、見直し続ける
編集後記:その「許可」、本当に判断していますか?
今回の監査を機に、ひとまずAIエージェントの操作許可を「自動」から「手動」に切り替えてみました。当然ながら、頻繁に許可を求められるようになりました。そのたびに画面を確認し、許可する。
ところが、ふと思いました。「最初に自分が指示した仕事をAIが進めているのだから」という安心感から、内容を十分に確認せず「許可」を押してはいないだろうか。
これでは、中身を見ずにハンコを押す、形だけの承認と変わりません。人間が承認ボタンを押したという事実と、人間が適切に判断したという事実は、同義ではない。自動化を制限するために人間の承認を挟んだ結果、その承認まで機械的になってしまう。なかなか皮肉な話です。
AIエージェントの安全性を考えるなら、AIの権限だけでなく、人間の判断が形骸化しない仕組みも考えなければならないのでしょう。
さて、次の「許可」は、ちゃんと読んでから押すことにします。笑


コメント