32blog

Claude Codeを会社で使う前に経営者が確かめる5つのこと

社員や外注先がClaude Codeを使い始めたら、経営者は設定を覚えなくていい。「本当に効いているか見せて」と言えればいい。対策したつもりになりやすい落とし穴と、確かめる5つの質問、どこまでやればリスクを減らせるかを、実際に試した結果つきでまとめた。

by omitsu公開20 min read
目次

Claude Code のような AI に仕事を任せるとき、いちばん怖いのは「対策したから大丈夫」という思い込みだ。経営者が設定を覚える必要はない。社員や外注先に、5つのことを「見せて」と言えればいい。

AI は、頼んだ以上のことに手が届く

Claude Code は、会話で頼むだけでパソコンの中のファイルを読み、書き換え、コマンドを実行する。公式の説明はこうだ。

Claude Code is an agentic coding tool that reads your codebase, edits files, runs commands, and integrates with your development tools.

(Claude Code は、コードを読み、ファイルを編集し、コマンドを実行し、開発ツールとつながる、エージェント型のコーディングツールだ)

— Claude Code overview

便利さの裏返しで、使い方次第では次のことが起きうる。

  • 社員のパソコンにあるお客様の情報や、保存してあるパスワードに届く
  • 頼んだ作業と関係のないファイルを書き換えたり、消したりする
  • 渡した鍵(GitHub などのアカウントの権限)で、頼んでいない場所まで操作できてしまう

ネットで読んだ指示に、AI が乗っ取られる心配もある。公式も「プロンプトインジェクション」として、対策の節を設けている。


「対策したつもり」になりやすい3つの落とし穴

よく紹介される対策の中には、効かないものや、思ったより弱いものがある。入れただけで安心すると、事故の元になる。

1. .claudeignore は効かない

「AI に読ませたくないファイルは .claudeignore に書けばいい」と紹介している記事がある。公式ドキュメントは、これを効果がないと書いている。

If your project has a .claudeignore file, it has no effect, so move its entries into Read deny rules.

(プロジェクトに .claudeignore ファイルがあっても効果はない。中身は Read の拒否ルールに移すこと)

— Configure permissions

このサイトでも、以前は .claudeignore に書いて、読ませないつもりになっていた。2026年10月26日に、よくある使われ方をまねた小さなプロジェクトを作って、試し直した。

  • 置いたファイル: 決済サービスの鍵を書いた設定ファイル(.env)と、お客様の名簿(customers.csv)。どちらも中身は架空
  • .claudeignore に、その2つを書いた
  • Claude Code に「中身を見せて」と頼んだ

2つとも、中身がそのまま表示された。

試したファイルと、表示された中身

.claudeignore には、こう書いた。

text
# AI に読ませないファイル
.env
.env.*
data/customers.csv

Claude Code(2.1.310)が表示した中身。値はどちらも架空。

text
STRIPE_SECRET_KEY=sk_test_DUMMY_0000_for_claudeignore_check
DATABASE_URL=postgres://user:DUMMYPASS@localhost/app
山田太郎,dummy@example.com,090-0000-0000

公式の言うとおり拒否ルールに移すと、ふつうの読み方は止まった。ただし、それだけでは抜けがあった。後の「全部閉じても、仕事にならない」で書く。

2. 「やってはいけないこと」を書いた指示ファイルは、守られる保証がない

Claude Code には、作業のルールを書いておく指示ファイル(CLAUDE.md)がある。「本番には触らない」「このフォルダは読まない」と書いておけば守ってくれそうに見える。公式はこう書いている。

Settings rules are enforced by the client regardless of what Claude decides to do. CLAUDE.md instructions shape Claude's behavior but are not a hard enforcement layer.

(設定のルールは、Claude が何を判断しても、ツール側が強制する。CLAUDE.md の指示は Claude の振る舞いに影響するが、強制する層ではない)

— How Claude remembers your project

指示はお願いで、仕組みではない。止めたいことは、設定やパソコン側の仕組みで止める必要がある。

3. 「作業フォルダの外には出ない」も、壁ではない

Claude Code は、毎回確認する設定(Manual モード)のとき、作業を始めたフォルダの外のファイルを読み書きする前に、確認を求める。ただし公式は、これが壁ではないと書いている。

The boundary is a permission prompt, so a Bash command you approve can still write anywhere your user account can

(この境界は確認の画面にすぎない。あなたが承認したコマンドは、あなたのアカウントが書ける場所ならどこにでも書ける)

— Security

確認の画面で「許可」を押し続ければ、境界は無いのと同じになる。パソコンの仕組みで閉じ込めるには、公式のサンドボックスや、別の仮想マシン・コンテナで動かす方法がある。


経営者が確かめる5つのこと

社員や外注先に、次の5つを聞く。答えを聞くだけでなく、できればその場で見せてもらう。

聞くこと安心できる答え危ない答え
1. AI が触れる範囲はどこまで?作業用の場所に閉じ込めてあり、会社の他のファイルや保存したパスワードには届かない普段使っているパソコンでそのまま動かしている
2. AI に渡した鍵で何ができる?この作業の1つだけ、必要な権限だけ、期限付き自分のアカウントでログインしたまま使わせている
3. 本番に出すのは誰が決める?AI は下書きまで。公開は自動の確認を通ったものか、人が決めるAI が直接公開できる
4. 禁止は「お願い」か「仕組み」か?設定や仕組みで止めていて、止まるところを見せられる。止めきれないところと、その理由も言える指示ファイルに書いてある、.claudeignore に書いてある
5. おかしなことが起きたら気づける?公開前に自動の確認があり、止まった記録が残る気づくのはお客様から連絡が来たとき

全部閉じても、仕事にならない

公式のサンドボックスを、実際に入れて試した。2026年10月25〜26日に、Claude Code 2.1.310 で確かめた。

分かったことは2つある。読ませない設定は、1つだけだと抜ける。そして完璧に閉じると、仕事が止まる。

読ませない設定は、2つ重ねないと抜ける

先ほどの架空の鍵と名簿で、読ませない設定を1つずつ足していった。

  • .claudeignore だけ: Claude Code のファイルを開く機能で、そのまま読めた
  • 公式の推す拒否ルール: ファイルを開く機能と、cat(ファイルを表示するコマンド)は止まった。フォルダ全体の検索(grep -r)と、Python のプログラムで開く方法では、中身まで読めた
  • サンドボックスの読み取り禁止も足す: ファイルを開く機能・cat・検索・Python の、どれも止まった

拒否ルールの抜けは、公式も書いている。

They don't apply to a command that reads files without naming them, such as grep -r pattern . run from the directory that holds the file, or to arbitrary subprocesses that read or write files indirectly, like a Python or Node script that opens files itself. For OS-level enforcement that blocks all processes from accessing a path, enable the sandbox.

(拒否ルールは、ファイル名を書かずに読むコマンドには効かない。そのファイルがあるフォルダで実行する grep -r pattern . などだ。Python や Node のプログラムが自分でファイルを開くような、間接的な読み書きにも効かない。すべての処理を OS の段階で止めるには、サンドボックスを有効にすること)

— Configure permissions

逆に、サンドボックスだけでも足りない。別の試しで、サンドボックスで隠したフォルダのファイルを、ファイルを開く機能では読めた。公式も、ファイルを開く機能はサンドボックスの外で動くと書いている。

閉じるほど、できることが減る

サンドボックスの閉じ方を変えて、ふだんの作業を流した。

  1. 入れただけ(初期設定): 作業フォルダの外への書き込みと、許可していない通信先は止まった(確認の画面を出さずに断る形で動かした)。パソコンの鍵が入るフォルダ(~/.ssh)は読めた。サイトの自動テストは、中で動かなかった
  2. 全部閉じる(作業フォルダの外は読めない、通信先もゼロ): 鍵のフォルダは見えなくなった。代わりに、AI が使う道具まで見えなくなり、ほぼ何もできなかった
  3. 必要なところだけ開ける: 道具は動いた。自動テストは、サンドボックスの外に出すしかなかった。GitHub など、鍵を使う外部への操作も、うちの環境では中から通らなかった

つまり、どこかは必ず開けることになる。開けたところに、別の守りを置く必要がある。


じゃあ、どうすればいいか

全部を一度にやる必要はない。上から順に進めるほど、事故の起きる余地は小さくなる。ただし、ゼロにはならない。

まず、今日からできること

設定の知識がなくても、社内のルールとして決められる。

  • 普段使いのパソコンで、確認をスキップする設定を使わせない
  • 社員の個人アカウントでログインしたまま、AI に作業させない。AI 用に、範囲と期限を絞った鍵を別に作る
  • .claudeignore で済ませている人がいたら、拒否ルールに移してもらう

鍵の範囲は、ここで差が出る。GitHub の公式は、従来型の鍵についてこう書いている。

Your personal access token (classic) can access every repository that you can access.

(従来型の個人用アクセストークンは、あなたがアクセスできるすべてのリポジトリにアクセスできる)

— Managing your personal access tokens

「確認をスキップする設定」について

Claude Code には、確認の画面を出さずに作業させる設定(bypassPermissions)がある。作業は速くなるが、公式は使う場所を限っている。

Only use this mode in isolated environments like containers or VMs where Claude Code can't cause damage.

(Claude Code が害を与えられない、コンテナや仮想マシンのような隔離された環境でだけ使うこと)

— Configure permissions

次に、仕組みで閉じる

ここからは、社員や外注先に頼む作業だ。

  • AI を動かす場所を、普段の仕事の場所から分ける。別のパソコン、仮想マシン、コンテナのどれでもいい
  • お客様の情報や鍵のファイルは、拒否ルールとサンドボックスの読み取り禁止を、両方かける
  • 通信先は許可制にする。許可していない宛先には、確認の画面が出る

サンドボックスには、「入れたつもり」で抜ける初期値が3つある。

  • 必要な部品が無いとき: 公式は "By default, if the sandbox can't start because a dependency is missing or the platform is unsupported, Claude Code runs commands without sandboxing."(初期設定では、部品が無いなどでサンドボックスが起動できないと、サンドボックス無しでコマンドを実行する)と書いている。止めるには failIfUnavailable を有効にする
  • 中で失敗したとき: AI がサンドボックスの外での再実行を求めることがある。ふだんは確認の画面が出るが、確認をスキップする設定では、確認なしで外で動く。止めるには allowUnsandboxedCommands を無効にする
  • 許可していない通信先: 確認をスキップする設定では、許可していない宛先にも確認なしでつながる。手元の試しでも、許可していない宛先に通信が通った。strictAllowlist を有効にすると、同じ試しで止まった
架空の鍵と名簿を、4つの読み方すべてから守れた設定

先ほどの試しで使ったプロジェクトに、この設定ファイル(.claude/settings.json)を置いた。ファイルを開く機能・cat・grep -r・Python の4つとも、中身を読めなかった。

json
{
  "permissions": {
    "deny": ["Read(./.env)", "Read(./.env.*)", "Read(./data/customers.csv)"]
  },
  "sandbox": {
    "enabled": true,
    "allowUnsandboxedCommands": false,
    "failIfUnavailable": true,
    "filesystem": {
      "denyRead": ["./.env", "./data/customers.csv"]
    }
  }
}

サンドボックスを使うには、Linux と WSL2 では bubblewrap と socat のインストールが要る。

それでも残るリスクは、被害を小さくする

閉じきれないところは、必ず残る。自動テストや、鍵を使う外部への操作がそうだ。そこは「起きない」ではなく「起きても小さく済む」ように備える。

  • 鍵は、その作業に要る範囲と期限だけにする。漏れても、届く先が限られる
  • AI に本番を直接触らせない。AI は下書きまでにして、公開の前に自動の確認か人の確認を挟む
  • 止まった記録が残るようにする。何が止まったかを見れば、仕組みが効いているか分かる

うちも、同じ考え方で運用している

このサイトも、Claude Code に記事の修正やサイトの改修を任せている。考え方は、上に書いたとおりだ。

  • AI を動かす場所を、普段の環境から分けている
  • AI に渡す鍵は、範囲と期限を絞っている
  • AI は本番に直接触れない。本番の前に、自動の確認を置いている

この記事を書いた日にも、AI の操作が仕組みに止められた。どれも本番に届く前に止まり、サイトに影響は出ていない。

細かい構成は、守りのために書かない。設計図を公開すると、その分だけ抜け道を探されやすくなるからだ。


自社で確かめるのが難しければ

5つの質問に、社内で答えられる人がいないこともある。外注先の答えが正しいか、判断できないこともある。

参考文献