AIコーディングエージェントのHooks活用
AIコーディングエージェントに.envや
Claude Codeでは、PreToolUseやPostToolUse 、UserPromptSubmitなど、
た.claude/settings.jsonに.envなどの
{
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/prompt-guard.sh"
}
]
}
],
"PreToolUse": [
{
"matcher": "Read|Write|Edit|Glob|Grep",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/guard-file-access.sh"
}
]
},
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/guard-bash.sh"
}
]
}
],
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/scan-output.sh"
}
]
}
]
}
}
この
- prompt-guard.sh
- プロンプト送信時に、
機密情報を 貼り付けないよう 注意喚起 - 必要に
応じて、 特定の 文言を 含むプロンプト自体を ブロック - API Keyなど
特定の パターンを 検知できる
- API Keyなど
- プロンプト送信時に、
- guard-file-access.sh
- Read/Write/Edit/Glob/Grepなどの
ツール経由で、 認証情報ファイルへ アクセスしようとした 場合に ブロックする
- Read/Write/Edit/Glob/Grepなどの
- guard-bash.sh
cat .envなど、シェルコマンド経由で 迂回して 参照されるのを 防ぐ
- scan-output.sh
- Write/Editの
実行後に、 出力内容に 機密情報らしき文字列が 含まれていないかを 確認する
- Write/Editの
実際のcat .envを
> cat .env を実行して
Read 1 file (ctrl+o to expand)
[guard-bash] Blocked: Command references a secret-file path
(e.g. .env, *.key, id_rsa, .ssh/, .aws/).
Ask the user to supply the value instead.
Command: cat .env
設定自体も
他にも