セキュリティと権限設計
安全にAIを業務で使うための設定
パーミッションモードの理解
Hermes Agentには、AIの操作をどこまで自動で許可するかを制御するパーミッションモードが用意されています。 業務で使う際は、このモードの選択がセキュリティの要になります。
- default(デフォルト) — ファイル編集やコマンド実行のたびに確認プロンプトが表示されます。 最も安全ですが、承認の手間が増えます。初めて使う場合はこのモードから始めるのがおすすめです。
- allowEdits(編集自動承認) — ファイルの編集は自動承認され、コマンド実行のみ確認が求められます。 コードの修正作業を中心に行う場合、作業効率が大きく向上します。
- auto mode(ベータ版) — バックグラウンドで動作する安全分類器(safety classifier)が、各操作のリスクを自動判定します。 低リスクの操作は自動承認、高リスクの操作は確認を求める仕組みです。 プロンプトインジェクション対策も組み込まれています。 Team/Enterpriseプラン + Sonnet/Opus 4.6以上が必要です。
私の運用では、開発中はallowEditsモード、本番環境に近い作業ではdefaultモードと使い分けています。 auto modeはまだベータですが、確認回数を大幅に減らせるため、今後主流になると考えています。
Auto Modeの仕組み
Auto Modeは単純に「すべて自動承認」するものではありません。 バックグラウンドで動作する安全分類器(safety classifier)が、 各ツール呼び出しのリスクを3段階で評価します。
- 低リスク(ファイル読み取り、コード生成等)→ 自動承認
- 中リスク(ファイル編集、安全なコマンド実行等)→ コンテキストに基づいて判断
- 高リスク(削除操作、外部通信、権限変更等)→ ユーザーに確認
プロンプトインジェクション対策も組み込まれており、 外部から注入された悪意のある指示をフィルタリングします。 settings.jsonでautoModeキーを使って分類器の挙動をカスタマイズすることもできます。
// settings.json — Auto Mode設定
{
"permissions": {
"defaultMode": "auto",
"autoMode": {
// カスタマイズ可能
}
}
}前提条件: Auto ModeにはTeamまたはEnterpriseプランが必要です。 また、Sonnet 4.6 / Opus 4.6以上のモデルが必要です。 個人プランの場合はallowEditsモード + ワイルドカード権限の組み合わせで 近い体験を実現できます。
ツール権限のワイルドカード設定
パーミッションモードに加えて、ツールごとに細かく権限を設定できます。settings.jsonのpermissionsで、 ワイルドカードパターンを使った柔軟な制御が可能です。
// settings.json
{
"permissions": {
"allow": [
"Bash(npm run *)", // npm runコマンドのみ許可
"Edit(/docs/**)", // docsフォルダ配下の編集を許可
"Read(/src/**)" // srcフォルダ配下の読み取りを許可
],
"deny": [
"Bash(rm *)", // 削除コマンドを拒否
"Read(.env)" // .envファイルの読み取りを拒否
]
}
}allowで許可するツールパターン、denyで拒否するパターンを指定します。denyルールは最高優先度で、他の設定で上書きできません。 パス指定には/(プロジェクトルート)、~/(ホーム)、//(絶対パス)のプレフィックスが使えます。
私はプロジェクトの初期設定で、まずdenyにRead(.env)とBash(rm -rf *)を入れることをルーティンにしています。 事故を防ぐ最低限のガードラインです。
Sandbox機能
Sandbox機能を有効にすると、Hermes Agentのコマンド実行がファイルシステムとネットワークから隔離された環境で行われます。 万が一、意図しないコマンドが実行されても、実際のファイルやネットワークへの影響を防げます。
// settings.json
{
"sandbox": {
"enabled": true,
"autoAllowBashIfSandboxed": true,
"excludedCommands": ["git", "docker"],
"network": {
"allowLocalBinding": true
}
}
}Sandbox利用者の報告では、パーミッション確認プロンプトが約84%削減されたというデータがあります。 安全性を保ちながら作業効率を大幅に上げられる、実用的な機能です。 対話中に/sandboxコマンドでSandboxの状態を確認・切り替えできます。
excludedCommandsでgitやdockerなど、Sandbox外で実行すべきコマンドを除外設定できるのもポイントです。
Sandboxのファイル・ネットワーク制御
Sandboxではファイルシステムとネットワークアクセスを細かく制御できます。 パスプレフィックスを使って、アクセス許可の範囲を指定します。
//— 絶対パス(例://usr/local/bin)~/— ホームディレクトリ(例:~/.ssh)/— プロジェクトルート相対(例:/src)./— カレントディレクトリ相対
// settings.json — Sandbox詳細設定
{
"sandbox": {
"enabled": true,
"filesystem": {
"allowWrite": ["/src", "/docs"],
"denyWrite": ["/.env", "/secrets"],
"denyRead": ["/.env.local"]
},
"network": {
"allowDomains": ["api.example.com"],
"allowLocalBinding": true
}
}
}failIfUnavailableをtrueにすると、 Sandboxが利用できない環境ではコマンド実行自体をブロックします。 Docker内で動作する場合はenableWeakerNestedSandboxで ネストされたSandboxを有効にできます。
機密情報の分離
AIツールを業務で使ううえで最も注意すべきなのが、機密情報の取り扱いです。 Hermes Agentでは、以下の手順で機密情報を安全に分離します。
- 環境変数を.envファイルに集約 — APIキー、データベース接続情報、秘密鍵などはすべて
.envファイルに記載します。 - .gitignoreに.envを追加 —
.envがGitリポジトリに含まれないようにします。 - CLAUDE.mdで読み取り範囲を明示制限 — CLAUDE.mdに「.envファイルを読まないこと」と明記し、settings.jsonの
denyルールでもRead(.env)を設定します。
# CLAUDE.md での記載例
## セキュリティルール
- .envファイルは絶対に読み取らないこと
- APIキーやトークンをコード内にハードコードしないこと
- 秘密情報は環境変数経由で参照することCLAUDE.mdでの指示とsettings.jsonのdenyルールを二重に設定することで、 AIが機密情報にアクセスするリスクを最小限に抑えられます。
Hooksで自動安全チェック
Hooks機能を使うと、Hermes Agentのツール実行前後に自動でスクリプトを走らせることができます。 セキュリティの観点では、破壊的な操作のブロックやコード品質の自動チェックに活用できます。
// settings.json — Hooks設定例
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "echo \"$TOOL_INPUT\" | grep -qE '(rm -rf|drop table|truncate)' && echo 'BLOCK: 破壊的コマンドを検出' && exit 1 || exit 0"
}
]
}
],
"PostToolUse": [
{
"matcher": "Edit",
"hooks": [
{
"type": "command",
"command": "npx prettier --write \"$FILEPATH\" 2>/dev/null || true"
}
]
}
]
}
}- PreToolUse — ツール実行前に発火します。上の例では、
rm -rfやdrop tableなどの破壊的コマンドを検出してブロックしています。 - PostToolUse — ツール実行後に発火します。ファイル編集後にPrettierでフォーマットを自動修正する例です。
上級者向けのTipsとして、権限リクエストをOpusモデルにルーティングし、 より高度な判断で自動承認/拒否を決定させるパターンもあります。 コストは増えますが、セキュリティと利便性を高いレベルで両立できます。
企業での運用ルール設計
チームや組織でHermes Agentを導入する場合、個人の設定だけでなく組織レベルでのガバナンスが必要です。 Anthropicは企業向けに以下の機能を提供しています。
- Team/Enterpriseプランのデータ保護 — Team/Enterpriseプランでは、ユーザーのプロンプトやコードがモデルのトレーニングに使用されません。 機密性の高いプロジェクトでも安心して利用できます。
- Managed Settings(組織ポリシー) — 管理者が
enterprise-settings.jsonで組織全体のポリシーを定義し、 個々のユーザーが変更できない強制ルールを設定できます。 たとえば、特定のディレクトリへのアクセス禁止や、使用可能なモデルの制限が可能です。 - SSO/SCIM連携 — シングルサインオンとSCIMプロビジョニングに対応しており、 既存のID管理基盤(Azure AD、Oktaなど)との統合が可能です。
- MDM配布 — モバイルデバイス管理ツール(Jamf、Intune等)を使って、 enterprise-settings.jsonを組織の全端末に自動配布できます。 IT管理者がポリシーを一元管理する仕組みです。
私がクライアント企業にHermes Agentの導入を支援する際は、 まずManaged Settingsで最低限のdenyルール(.env読み取り禁止、rm -rf禁止)を全社に適用し、 そのうえで各プロジェクトのsettings.jsonで追加の権限設定を行う二段構えを推奨しています。