概要
- Claude Code の内部許可システム「YOLO Classifier」の詳細解説
- ドキュメント未記載の 設定・フック・スキル・エージェント の拡張機能
- hooks によるリアルタイム動作変更と自動化例
- frontmatter やmemoryなど、公式未公開のパラメータ紹介
- バージョン依存性 と実装時の注意点
Claude CodeのYOLO Classifierと未公開機能
- 内部で YOLO Classifier と呼ばれる自動許可判定システム(
yoloClassifier.ts) - 設定ファイルで 英語の説明文 を記述するだけで、環境や許容操作を柔軟に指定可能
- 例:「this is a staging server, destructive operations are acceptable」
- npmパッケージ として
node_modulesにソースが含まれ、誰でも中身を確認可能 - 公式ドキュメント未掲載の フィールド・レスポンス形式・設定項目 が多数存在
バージョン注意
- 本内容は @anthropic-ai/claude-code@2.1.87 時点の情報
- 未公開機能は 将来のバージョンで変更・削除される可能性 あり
EXPERIMENTAL付きフィールドは特に不安定扱い
設定ファイル配置・構成
- 個人設定 :
~/.claude/settings.json - プロジェクト設定 :
.claude/settings.json(git共有可) - スキル :
~/.claude/skills/<name>/SKILL.mdまたは.claude/skills/ - エージェント :
~/.claude/agents/<name>.md - フックスクリプト :
~/.claude/hooks/- スクリプトは
chmod +xで実行権限付与
- スクリプトは
フック(hooks)による高度な自動化
- 公式ドキュメント未記載 のフックレスポンスフィールド多数
- PreToolUse フックでコマンド入力書き換え・自動許可判定などが可能
- 例:
updatedInputでgit pushコマンドに--dry-run自動付与
- 例:
- SessionStart フックでファイル監視や初期文脈注入
- 例:現在のgitブランチ・未コミットファイル数を自動取得
- PostToolUse フックでツール実行後の出力加工や追加文脈注入
- PermissionRequest フックでプログラム的な許可・拒否判定
hooks設定例
-
PreToolUseでgit pushをdry-run化
{ "hooks": { "PreToolUse": [{ "matcher": "Bash", "hooks": [{ "type": "command", "command": "~/.claude/hooks/dry-run-pushes.sh" }] }] } }- シェルスクリプト例(dry-run-pushes.sh):
#!/bin/bash INPUT=$(jq -r '.tool_input.command' < /dev/stdin) if echo "$INPUT" | grep -q 'git push'; then jq -n --arg cmd "$INPUT --dry-run" '{"updatedInput": {"command": $cmd}}' fi
- シェルスクリプト例(dry-run-pushes.sh):
-
SessionStartでgit情報・ファイル監視を注入
{ "hooks": { "SessionStart": [{ "hooks": [{ "type": "command", "command": "~/.claude/hooks/session-context.sh", "statusMessage": "Loading project context..." }] }] } }- シェルスクリプト例(session-context.sh):
#!/bin/bash BRANCH=$(git branch --show-current 2>/dev/null) CHANGES=$(git status --porcelain 2>/dev/null | wc -l | tr -d ' ') jq -n \ --arg branch "$BRANCH" \ --arg changes "$CHANGES" \ '{ "watchPaths": ["package.json", ".env", "tsconfig.json"], "additionalContext": "Current branch: \($branch). Uncommitted changes: \($changes) files." }'
- シェルスクリプト例(session-context.sh):
-
PreToolUseで読み取り専用コマンドを自動許可
{ "hooks": { "PreToolUse": [{ "matcher": "Bash", "hooks": [{ "type": "command", "command": "~/.claude/hooks/auto-approve-readonly.sh" }] }] } }- シェルスクリプト例(auto-approve-readonly.sh):
#!/bin/bash CMD=$(jq -r '.tool_input.command' < /dev/stdin) if echo "$CMD" | grep -qE '^(ls|cat|echo|pwd|whoami|date|git status|git log|git diff)'; then echo '{"permissionDecision": "allow", "permissionDecisionReason": "Safe read-only command"}' fi
- シェルスクリプト例(auto-approve-readonly.sh):
hooks追加プロパティ
- once :一度だけ実行し自動解除(初回セットアップ等に最適)
- async :バックグラウンド実行で処理をブロックしない
- asyncRewake :通常は非同期だが、exit code 2時のみ処理をブロック
スキル・エージェントの未公開frontmatterパラメータ
- model :利用モデル(例:haiku, opus)を指定
- effort :推論深度(low, medium, high, max)
- hooks :スキル有効時のみ作用するフック
- agent :カスタムエージェントへの委譲
- disable-model-invocation :自動起動禁止(/skill-nameのみ有効)
- shell :実行シェル指定(例:bash)
agent用frontmatter追加項目
- color :UIでの色分け(red, orange, yellow, green, blue, purple, pink, gray)
- memory :永続メモリ(user, project, local)
- 例:プロジェクトごとの知識ベース構築
- omitClaudeMd :CLAUDE.mdの指示階層を読み込まない
- criticalSystemReminder_EXPERIMENTAL :毎ターン注入されるシステムリマインダー(実験的)
- requiredMcpServers :必須MCPサーバーパターン指定
まとめ
- Claude Code は 公式ドキュメント未掲載 の強力な拡張機能を多数搭載
- ソースコード解析 で新たな設定や自動化が可能
- hooks・frontmatter を活用することで、 独自のワークフローや安全対策 を実装可能
- バージョンアップ時の互換性 に注意しつつ、積極的な活用で開発効率と安全性を大幅向上