From yolo
Sets up PermissionRequest hooks to auto-approve all tools, websearch/webfetch only, or route requests to Claude review in Claude Code. Invoke /yolo [mode] [--global].
npx claudepluginhub recursechat/agent-workflow --plugin yoloThis skill uses the workspace's default tool permissions.
Set up a PermissionRequest hook that auto-handles permission prompts.
Installs PreToolUse hook using Claude Haiku to auto-approve read-only tools/simple Bash, review complex Bash/accept-edits, reducing permission prompts in Claude Code sessions.
Provides reference for Claude Code permission modes (default, acceptEdits, plan, dontAsk, bypass), allow/deny lists, pattern matching, and tool categories. Use to configure secure tool access and switch modes runtime.
Generates PermissionRequest hooks that auto-approve safe operations, auto-deny dangerous ones, and tailor rules to detected project stack. Safer alternative to --dangerouslySkipPermissions for manual permission mode.
Share bugs, ideas, or general feedback.
Set up a PermissionRequest hook that auto-handles permission prompts.
/yolo approve-all — auto-approve everything (no security review)/yolo approve-websearch — auto-approve WebSearch and WebFetch only; all other tools fall through to the normal permission dialog/yolo review — route each permission request to Claude for security review via claude -p/yolo off — remove the PermissionRequest hook--global to any command to apply to ~/.claude/settings.json instead of the project's .claude/settings.local.jsonIf no argument is given, default to review.
Determine the target settings file:
--global is in the arguments: ~/.claude/settings.json.claude/settings.local.json in the project rootRead the target settings file. If it doesn't exist, start with {}.
Based on the mode:
approve-allSet hooks.PermissionRequest in the settings to:
[
{
"hooks": [
{
"type": "command",
"command": "INPUT=$(cat); TOOL=$(echo \"$INPUT\" | grep -o '\"tool_name\":\"[^\"]*\"' | head -1 | sed 's/\"tool_name\":\"//;s/\"//'); if [ \"$TOOL\" = \"AskUserQuestion\" ]; then echo '{}'; else echo '{\"hookSpecificOutput\":{\"hookEventName\":\"PermissionRequest\",\"decision\":{\"behavior\":\"allow\"}}}'; fi"
}
]
}
]
approve-websearchSet hooks.PermissionRequest in the settings to:
[
{
"hooks": [
{
"type": "command",
"command": "INPUT=$(cat); TOOL=$(echo \"$INPUT\" | grep -o '\"tool_name\":\"[^\"]*\"' | head -1 | sed 's/\"tool_name\":\"//;s/\"//'); if [ \"$TOOL\" = \"AskUserQuestion\" ]; then echo '{}'; elif [ \"$TOOL\" = \"WebSearch\" ] || [ \"$TOOL\" = \"WebFetch\" ]; then echo '{\"hookSpecificOutput\":{\"hookEventName\":\"PermissionRequest\",\"decision\":{\"behavior\":\"allow\"}}}'; else echo '{}'; fi"
}
]
}
]
reviewFirst, create .claude/hooks/permission-review.sh in the target location (project root or ~/.claude/hooks/ for global) with the contents of permission-review.sh. Make it executable.
Then set hooks.PermissionRequest in the settings to:
[
{
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/permission-review.sh",
"timeout": 30
}
]
}
]
For --global, use the absolute path ~/.claude/hooks/permission-review.sh instead of $CLAUDE_PROJECT_DIR.
offRemove the PermissionRequest key from hooks in the settings. If hooks is then empty, remove hooks too.
Write the updated settings file, preserving all other keys (permissions, etc.).
Tell the user to restart their Claude Code session for hooks to take effect.