2026/08/30 18:46

AI格差は「権限」で生まれる

AIにどこまで権限を与えるか──Claude Codeをきっかけに、AI時代の生産性格差と必要なITリテラシーについて考えます。


最近、AI利用をかなり推奨している開発現場に入ったんですが、そこでClaude Codeの設定手順を渡されたんですよね。
その手順の中に、.claude/settings.json の設定がありました。
Claude Codeは、コードを読んだり書き換えたりするだけではなく、Bashを使ってPC上のコマンドを実行できます。
テストを実行したり、Gitの状態を確認したり、Dockerを操作したり、DBに接続したりできる。
かなり便利なんですが、当然ながら何でも自由に実行できるようにすると怖い部分もあります。
そこでClaude Codeには権限設定があって、permissions.deny に、

「この操作はClaude Codeには実行させない」

というルールを設定できます。
要するに、Claude Codeに対する禁止リストみたいなものですね。
今回渡された手順では、この permissions.deny にかなり大量のBashコマンドが登録されていました。
その中に rm がありました。
これはまあ、分かります。
rm はファイルを削除するコマンドなので、AIが変な判断をして大量のファイルを消してしまったら困る。最初は安全側に倒して、自由には実行させないという考え方ですよね。
ただ、その一覧を見ていたら psql まで禁止されていました。
ここで、

「psql もダメなのか」

と思ったんです。
もちろん、これも理由は分かります。
psql はPostgreSQLに接続してSQLを実行するためのコマンドです。接続先と権限によっては、データを見るだけではなく、更新も削除もできます。
本番DBにつながる環境なら、AIに自由に触らせるのはかなり怖い。
しかも、その手順書には「必要に応じて権限を緩めてください」という趣旨のことも書いてありました。
なので、この設定自体がおかしいという話ではないんですよね。
最初は厳しくしておいて、分かる人が状況を見ながら解除していく。
セキュリティの考え方としては、むしろ普通だと思います。
ただ、実際に開発してみると、ここで別のことが気になってきました。
psql を使えるAIと使えないAIでは、生産性が全然違うんですよね。


psql を使えないと、人間がAIの手足になる


不具合調査をしていると、コードを読むだけで原因が分かるとは限りません。
このIDのデータは本当に存在するのか。
関連テーブルには何が入っているのか。
アプリケーション側ではこうなるはずなのに、実際のDBはどうなっているのか。
こういう確認をしながら原因を絞っていくことは、実際の開発では普通にあります。
このときClaude Codeが psql を使えないと、DBを確認する部分だけ人間が担当することになります。
Claude Codeから、

このSQLを実行して結果を教えてください。

と言われる。
人間が実行して、その結果をClaude Codeに渡す。
すると今度は、

では、このテーブルも確認してください。

と言われる。
また人間が実行する。
これを何回か繰り返していると、ちょっと妙な感じになってくるんですよね。
AIを使っているはずなのに、人間の方がAIの手足になっている
もちろん、それでも調査はできます。
ただ、Claude Code自身が psql を使える場合は全然違います。
コードを読んで、「この辺が怪しい」と仮説を立てる。
そのままDBを見る。
想定と違っていたら関連する別のテーブルを見る。
必要ならSQLを変えてもう一度調べる。
そこで原因が分かれば、そのままコードを修正して、テストまで実行する。
つまり、

AI自身が調査と検証のループを回せる

わけです。
この途中に毎回人間が入るかどうかは、思っていた以上に大きな差でした。
自分の感覚では、psql を使えるか使えないかで、天と地ほど生産性が違うと言ってもいいくらいです。
AIエージェントの価値って、単にコードを書いてくれることだけではないんですよね。
自分で調べて、仮説を立てて、それを検証して、結果を見て次の行動を決める。
そこまでやってくれるから強い。
そう考えると、psql を禁止するというのは、単に一つのコマンドを使えなくする以上に、AIの調査能力そのものをかなり削っていることになります。
じゃあ、

psql くらい自由に使わせればいいじゃないか。

という話になるかというと、もちろんそんなに単純でもありません。


問題は psql ではなく、その先に何があるか


同じ psql でも、ローカルの開発DBに接続するのと、本番DBに接続するのでは意味がまったく違います。
開発DBにはダミーデータしか入っていない。
壊しても作り直せる。
本番DBにはそもそも接続できない。
そういう環境なら、AIに psql をかなり自由に使わせても、それほど怖くないと思うんです。
反対に、ローカルDBに本番からコピーしてきたデータがそのまま入っている。
氏名やメールアドレスなどの個人情報も含まれている。
さらに、開発PCから本番DBにも接続できる。
そういう環境なら話は全然違ってきます。
この状態で、

AIには psql を使わせません。

とするのは、一つの対策ではあります。
ただ、ここで少し考えたくなるんですよね。
そもそも、本番の個人情報をローカルPCに置く運用の方を見直した方がいいのではないか。
ということです。
これは別にAIが登場したから突然出てきた問題ではありません。
個人情報を開発者のPCに置けば、PCの紛失もありますし、マルウェアもあります。誤操作で別の場所にアップロードしてしまう可能性だってある。
AI以前から、できるだけ避けた方がよかった運用です。
ただ、Claude CodeのようなAIエージェントがローカルのファイルを読み、コマンドを実行し、DBまで自律的に調査するようになったことで、この問題がより分かりやすくなったように感じます。
自分としては、

AIに触らせたくないデータをローカルに置いて、そのうえでAIの権限を細かく縛る

よりも、

そもそもAIに見られて困るようなデータをローカル開発環境に持ち込まない

という考え方の方がいいと思っています。
そのうえで、ローカル開発環境の中では、AIにある程度自由に動いてもらう。
AIを信用しているから自由にするわけではありません。
AIが間違えることを前提に、それでも致命的なことにならない場所で動かす。
という考え方ですね。
ただ、ここでまた一つ問題が出てきます。
どこまでなら安全なのかを、誰が判断するのかという話です。


「必要に応じて緩める」の「必要」が分からない人はどうするのか


今回の手順書には、

必要に応じて権限を緩める

という趣旨のことが書かれていました。
これは合理的なんですよね。
psql が何をするものなのか知っていて、このプロジェクトの構成もある程度分かっている人なら判断できます。
このDBはどこにあるのか。
本番につながる可能性はあるのか。
中にはどういうデータが入っているのか。
Claude Codeにこの権限を与えると何ができるようになるのか。
そこを確認したうえで、

この環境なら psql は許可しても大丈夫だな。

と判断できます。
では、psql が何なのか分からない人はどうするのでしょうか。
おそらく、そのまま使うと思います。
何をするコマンドなのか分からない以上、わざわざdenyから外す理由もない。
しかも、その状態でもClaude Code自体は普通に使えます。
コードを書いてくれる。
質問にも答えてくれる。
不具合の原因もある程度調べてくれる。
なので、

Claude Codeってこういうものなんだな。

と思って、そのまま使い続ける可能性があります。
でも、その隣では、分かる人が psql を解放している。
必要なBashコマンドも使わせている。
Dockerの中も調査させている。
安全だと判断した範囲では、かなり自由に動かしている。
そうすると、同じClaude Codeを使っているはずなのに、できることが全然違ってきます。
片方は、コードを書いてくれるアシスタントに近い。
もう片方は、自分で調査し、DBを見て、仮説を検証し、修正してテストまで進めるエージェントになっている。
同じAIなのに、実質的には別の道具になってしまうんですよね。
ここには、新しいAI格差があると思っています。
従来よく言われるAI格差は、

AIを使える人と使えない人

でした。
でも、今後はもう一段階進んで、

AIを使っている人の中でも、AIの能力をどこまで解放できるかで差がつく

ということなのではないでしょうか。
Claude Codeをインストールして、同じモデルを使っていれば、同じようにAIを活用できるわけではありません。
psql を使わせていいのか。
Bashをどこまで自由に使わせていいのか。
Git操作はどこまで任せるのか。
Dockerは触らせていいのか。
その判断によって、AIのできることは大きく変わります。
そして、その判断をするために必要なのが、結局は昔からあるITの基礎知識なんですよね。


AIが便利になった結果、「知らないとできない」というブレーキがなくなった


今のAIは本当に便利なので、以前なら一定の知識がなければ作れなかったものを、初心者でもかなり作れるようになりました。
PostgreSQLをよく知らなくても、

DBを使ったアプリを作りたい。

とAIに言えば作ってくれます。
Gitのコマンドを知らなくても、

この変更を新しいブランチにしてコミットして。

と頼めばやってくれる。
Dockerについてよく分からなくても、

Dockerで開発できるようにして。

と言えば、Dockerfileやcomposeファイルまで作ってくれます。
これは本当にすごいことです。
以前より、開発を始めるハードルは圧倒的に下がりました。
ただ、その結果として、

psql が何なのか知らないのに、AIが psql を使って開発している

という状況も普通に起こり得ます。
昔なら、psql を知らない人が、いきなりPostgreSQLを直接操作することはあまりなかったと思うんです。
そこまで行くには、DBとは何か、SQLとは何か、接続先とは何か、少しずつ覚える必要があった。
知らなければ、そもそも先に進めなかった。
ところが今は、その部分をAIが全部飛び越えてくれます。
しかも、かなりの確率でうまくやってくれる。
実は、ここが少し怖いところでもあると思っています。
AIが失敗すれば、

何か自分が理解できていないことがあるな。

と気づけます。
でもAIが成功し続けると、仕組みをよく理解しないまま、かなり先まで進めてしまう。
そしてある日、Claude Codeから、

このコマンドを実行してもいいですか?

と聞かれる。
何をするコマンドなのか、本当はよく分かっていない。
でも今までClaude Codeがうまくやってくれていたから、

まあ大丈夫だろう。

とAllowを押してしまう。
AIの危険性というと、AIが間違ったコードを書くことを想像しがちです。
でも、それだけではないんですよね。

人間が、自分では理解していない強い操作を、AIを通じて簡単に実行できるようになった。

これも、かなり大きな変化だと思います。
だからといって、初心者はAIを使わない方がいい、という話ではありません。
むしろ、どんどん使えばいいと思います。
分からないことがあればAIに聞けばいい。
ただ、AIがやろうとしていることが分からないときに、そのまま実行させない。

・このコマンドは何をするのか。
・どこに接続しようとしているのか。
・何を変更するのか。
・失敗したら何が起きるのか。

そこを確認する。
そして、ここから先が結構重要だと思っています。


AI時代だからこそ、専門的なITリテラシーが必要になる


AIがコードを書いてくれるようになったので、

これからは技術的なことを細かく勉強しなくてもいい。

という見方もあると思います。
確かに、覚えなくてよくなったことはかなりあります。
psql の細かいオプションを暗記する必要はない。
Dockerコマンドの書き方を忘れていても、AIに聞けばいい。
Gitのコマンドを全部覚えていなくても、やりたいことを伝えればAIが書いてくれる。
SQLの構文だって、昔ほど暗記する必要はないでしょう。
ただ、

だからDBやGitやDockerを勉強しなくていい。

という話にはならないと思うんですよね。
たとえば、Claude Codeに psql を許可していいか判断するには、
「psql はPostgreSQLを操作するものです」
と知っているだけでは足りません。
今どのDBに接続しようとしているのか。
そのDBはローカルなのか、ネットワークの先にあるのか。
どの認証情報を使っているのか。
そのユーザーにはどこまで権限があるのか。
SQLを直接実行することで、アプリケーション側の処理を迂回する可能性はないのか。
データを更新した場合、どこまで戻せるのか。
そういうところまで分かって、初めて、

この psql はClaude Codeに任せても大丈夫そうだ。

と判断できます。
Bashでも同じです。
rm は危ないコマンドだから禁止、と覚えるだけでは足りない。
何を消そうとしているのか。
Gitで管理されているファイルなのか。
生成し直せるファイルなのか。
そのディレクトリには永続化されたデータがないのか。
そこまで見て、危険性を判断する必要があります。
Dockerもそうです。
Gitもそうです。
ネットワークも認証もクラウドも同じです。
つまり必要なのは、

「危険なコマンド一覧」を暗記することではなく、その操作がどこまで届いて、何を変更して、失敗したときに何が起きるのかを想像できること

なんだと思います。
これって、かなり専門的なITリテラシーなんですよね。
OS。
ファイルシステム。
プロセス。
権限。
ネットワーク。
DB。
Git。
コンテナ。
認証。
クラウド。
こうしたものがどうつながっているのかを、ある程度理解している必要がある。
面白いのは、AIが便利になったことで、この知識が不要になるどころか、別の意味で重要になってきたことです。
昔は、

自分で操作するために知識が必要だった。

今は、

AIにその操作を任せていいのか判断するために知識が必要になった。

ということなんですよね。
以前なら、自分で psql を使うために psql を勉強していました。
これからは、

Claude Codeに psql を自由に使わせても大丈夫なのかを判断するために、psql やDBについて勉強する。

そういう知識の使い方になっていくのかもしれません。
そして、ここが最初のAI格差の話につながります。
AIを使っている人同士でも、ITの仕組みを理解している人は、

ここまではAIに任せて大丈夫。ここから先は危ない。

と判断できます。
だから、安全な範囲では思い切ってAIの権限を解放できる。
一方で、仕組みが分からない人は、安全側に倒して権限を閉じたまま使うか、逆に危険性を理解しないまま全部Allowしてしまう。
どちらも、あまりいい状態ではありません。
理想は、

何が危険なのかを理解したうえで、安全なところは大胆にAIへ任せる。

ということだと思います。
結局、これからのAI格差って、

AIを使っているかどうか

だけではなくなっていくんじゃないでしょうか。
同じAIを使っていても、

そのAIにどこまで安全に権限を渡せるか。

そこを判断できる人とできない人で、生産性にかなり大きな差が出てくる。
AIがコードを書いてくれるようになって、開発者に必要な勉強は減っていくのかと思っていました。
でも実際には、少し違うのかもしれません。

自分で操作するための勉強から、AIに何を任せていいのかを判断するための勉強へ。

AI時代になって、技術を勉強する意味そのものが変わり始めているんですよね。