質問と回答(Q&A)

Claude Code・Codex・Gemini CLI について公開の場で寄せられた質問に、編集部が公式ドキュメントを基に回答しています。出典付き。

Q. Claude Code の deny で .env を禁止しても、settings.local.json の allow で読めてしまうことはありますか?

編集部の回答検索でよく調べられている質問関連記事 →

ありません。deny はどのスコープ(ユーザー / プロジェクト / ローカル)に書かれていても allow より優先されます。プロジェクトの .claude/settings.json に次を書いておけば、個人の settings.local.jsonRead を広く許可していても .env は読まれません。

{
  "permissions": {
    "deny": ["Read(./.env)", "Read(./.env.*)"]
  }
}

ただし deny は Claude Code のツール呼び出しに対する制御で、cat .env のようなシェルコマンド経由の読み取りは別ルールです。Bash(cat .env:*) のような前方一致は回避されやすいので、確実に守りたい値は .env をワークスペースの外に置くか、シークレットマネージャーから実行時に注入してください。

Q. hooks を settings.json に書いたのに実行されません。何を確認すればよいですか?

編集部の回答検索でよく調べられている質問関連記事 →

次の順で確認してください。

  1. /hooks を実行し、登録した hook が一覧に出るか見る。出なければ JSON の構文(末尾カンマ、引用符)か、置き場所(.claude/settings.json~/.claude/settings.json)が原因です
  2. matcher はツール名の正規表現です。ファイル編集に反応させるなら Edit|Write|MultiEdit、コマンドなら Bash です。イベント名(PreToolUse / PostToolUse)の綴りも確認します
  3. スクリプトに実行権限があるか(chmod +x)、シェバン行があるか、jq が入っているかを確認します。bash .claude/hooks/format.sh のように bash 経由で呼べば実行権限は不要です
  4. claude --debug で起動すると、hook の実行と終了コード、標準エラー出力が表示されます

設定を編集したあとはセッションを再起動すると確実に反映されます。

Q. claude mcp add で追加した MCP サーバーが /mcp で failed と表示されます。

編集部の回答検索でよく調べられている質問関連記事 →

ほとんどの場合、サーバー自体の起動に失敗しています。Claude Code の外で同じコマンドを直接実行してエラーを見るのが最短です。

npx @playwright/mcp@latest

よくある原因は次の 3 つです。

  • 初回の npx がタイムアウト: パッケージのダウンロードに時間がかかっています。一度手動で起動してキャッシュさせてから再接続してください
  • 環境変数が渡っていない: -e KEY=value で渡した値、または .mcp.json${VAR} が、Claude Code を起動したシェルに存在するか echo $VAR で確認します
  • Node.js のバージョン不足: サーバーの要求バージョン(多くは 18 以上)を満たしているか node -v で確認します

直ったら claude mcp list で状態を確認し、対話中は /mcp を再実行してください。

Q. Codex で npm install が失敗します。サンドボックスのせいですか?

編集部の回答検索でよく調べられている質問関連記事 →

はい。workspace-write サンドボックスは既定でネットワークを遮断するため、パッケージのダウンロードが失敗します。承認ポリシーが on-failure なら「サンドボックス外で再実行してよいか」を聞かれるので許可すれば通ります。毎回聞かれたくない場合は ~/.codex/config.toml でネットワークだけ許可します。

sandbox_mode = "workspace-write"

[sandbox_workspace_write]
network_access = true

ネットワークを許可すると外部へのデータ送信も可能になるので、信頼できるリポジトリでだけ有効にしてください。調査だけの作業は read-only のままで問題ありません。

Q. Gemini CLI を無料で使っていたら途中で応答が止まりました。上限に達したのでしょうか?

編集部の回答検索でよく調べられている質問関連記事 →

個人の Google アカウントでの無料利用には、1 分あたりと 1 日あたりのリクエスト上限があります。1 回の指示でもファイル読み取りやコマンド実行のたびにモデルを呼ぶため、体感では「指示 1 回 = リクエスト数回」です。長いタスクを続けると午後には日次上限に達することがあります。

対処は 2 つです。

  • リセットまで待つ(分単位・日単位で回復します)
  • GEMINI_API_KEY を設定して有料枠に切り替える(その時点から従量課金)
export GEMINI_API_KEY="your-key"
gemini

上限の具体的な数値は改定されるので、公式ドキュメントで最新値を確認してください。業務のコードを扱う場合は、データ利用条件の違いからも API キーか Vertex AI を勧めます。

Q. うっかり API キーが書かれたファイルを AI に読ませてしまいました。どうすればいいですか?

編集部の回答検索でよく調べられている質問関連記事 →

送信済みのデータを取り消す方法はないので、そのキーを失効させて再発行するのが唯一の確実な対処です。順番は次のとおりです。

  1. 発行元のサービスでキーを失効(revoke)し、新しいキーを発行する
  2. 失効までの間に不正利用がなかったか、サービス側の利用ログを確認する
  3. 読まれた経路を特定し、再発防止の設定を入れる(Claude Code なら Read(./.env) の deny、Codex はファイルをワークスペース外へ、Gemini CLI は .geminiignore)
  4. Git 履歴にも含まれていた場合は、失効に加えて履歴からの除去を検討する

「自分しか見ていないから」と失効を省略しないでください。データの保持期間中の扱いはプランと契約に依存します。

質問は GitHub Issues やコミュニティなど公開の場に投稿されたものを要約して引用し、出典を示しています。回答は編集部が公式ドキュメントを基に書いています。