{
  "env": {
    "date": "2026-10-14",
    "claude_code": ["2.1.291", "2.1.296"],
    "models": ["claude-haiku-4-5", "claude-sonnet-5-5"],
    "note": "ghは呼ばれたらログに1行書くだけの偽物（experiment/shim/gh）。f23だけは絶対パスなので本物のghが動き、no git remotes foundで失敗する"
  },
  "thirty_forms": [
    {
      "id": "f01",
      "command": "gh pr merge 1",
      "label": "素の形",
      "deny_rule_default": ["denied", "denied", "denied", "denied"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": false,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f02",
      "command": "env gh pr merge 1",
      "label": "env",
      "deny_rule_default": ["denied", "denied", "denied", "denied"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": false,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f03",
      "command": "timeout 5 gh pr merge 1",
      "label": "timeout",
      "deny_rule_default": ["denied", "denied", "denied", "denied"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": false,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f04",
      "command": "nice gh pr merge 1",
      "label": "nice",
      "deny_rule_default": ["denied", "denied", "denied", "denied"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": false,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f05",
      "command": "nohup gh pr merge 1",
      "label": "nohup",
      "deny_rule_default": ["denied", "denied", "denied", "denied"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": false,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f06",
      "command": "command gh pr merge 1",
      "label": "command",
      "deny_rule_default": ["denied", "denied", "denied", "denied"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": false,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f07",
      "command": "FOO=bar gh pr merge 1",
      "label": "変数前置",
      "deny_rule_default": ["denied", "denied", "denied", "denied"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": false,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f08",
      "command": "gh  pr  merge 1",
      "label": "空白重ね",
      "deny_rule_default": ["denied", "denied", "denied", "denied"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": false,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f09",
      "command": "echo hi && gh pr merge 1",
      "label": "&&",
      "deny_rule_default": ["denied", "denied", "denied", "denied"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": false,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f10",
      "command": "echo hi; gh pr merge 1",
      "label": ";",
      "deny_rule_default": ["denied", "denied", "denied", "denied"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": false,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f11",
      "command": "gh pr merge 1 &",
      "label": "&",
      "deny_rule_default": ["denied", "denied", "denied", "denied"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": false,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f12",
      "command": "(gh pr merge 1)",
      "label": "( )",
      "deny_rule_default": ["denied", "denied", "denied", "denied"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": false,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f13",
      "command": "for i in 1; do gh pr merge $i; done",
      "label": "for内",
      "deny_rule_default": ["denied", "denied", "denied", "denied"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": false,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f14",
      "command": "bash -c 'gh pr merge 1'",
      "label": "bash -c",
      "deny_rule_default": ["asked", "asked", "asked", "asked"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": true,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f15",
      "command": "bash <<< 'gh pr merge 1'",
      "label": "bash here-string",
      "deny_rule_default": ["asked", "asked", "asked", "asked"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": true,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f16",
      "command": "echo 1 | xargs gh pr merge",
      "label": "xargs（標準入力つき）",
      "deny_rule_default": ["denied", "denied", "denied", "denied"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": false,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f17",
      "command": "echo 1 | xargs -n1 gh pr merge",
      "label": "xargs -n1",
      "deny_rule_default": ["asked", "asked", "asked", "asked"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": true,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f18",
      "command": "gh -R o/r pr merge 1",
      "label": "フラグ先置き",
      "deny_rule_default": ["asked", "asked", "asked", "asked"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": true,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f19",
      "command": "gh 'pr' merge 1",
      "label": "引用符",
      "deny_rule_default": ["asked", "asked", "asked", "asked"],
      "hook_v1_default": ["asked", "asked", "asked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": true,
        "hook_v1": true,
        "hook_v2": false
      }
    },
    {
      "id": "f20",
      "command": "sh -c 'gh pr merge 1'",
      "label": "sh -c",
      "deny_rule_default": ["asked", "asked", "asked", "asked"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": true,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f21",
      "command": "/usr/bin/env gh pr merge 1",
      "label": "/usr/bin/env",
      "deny_rule_default": ["asked", "asked", "asked", "asked"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": true,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f22",
      "command": "./bin/gh pr merge 1",
      "label": "相対パス",
      "deny_rule_default": ["asked", "asked", "asked", "asked"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": true,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f23",
      "command": "/opt/homebrew/bin/gh pr merge 1",
      "label": "絶対パス",
      "deny_rule_default": ["asked", "asked", "asked", "asked"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": true,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f24",
      "command": "eval \"gh pr merge 1\"",
      "label": "eval",
      "deny_rule_default": ["asked", "asked", "asked", "asked"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": true,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f25",
      "command": "$(echo gh) pr merge 1",
      "label": "コマンド置換",
      "deny_rule_default": ["asked", "asked", "asked", "asked"],
      "hook_v1_default": ["asked", "asked", "asked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": true,
        "hook_v1": true,
        "hook_v2": false
      }
    },
    {
      "id": "f26",
      "command": "G=gh; $G pr merge 1",
      "label": "変数展開",
      "deny_rule_default": ["denied", "denied", "denied", "denied"],
      "hook_v1_default": ["asked", "asked", "asked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": false,
        "hook_v1": true,
        "hook_v2": false
      }
    },
    {
      "id": "f27",
      "command": "echo 'gh pr merge 1' | sh",
      "label": "パイプでsh",
      "deny_rule_default": ["asked", "asked", "asked", "asked"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": true,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f28",
      "command": "find . -maxdepth 0 -exec gh pr merge 1 \\;",
      "label": "find -exec",
      "deny_rule_default": ["asked", "asked", "asked", "asked"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": true,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f29",
      "command": "git -c alias.x='!gh pr merge 1' x",
      "label": "git alias",
      "deny_rule_default": ["asked", "asked", "asked", "asked"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": true,
        "hook_v1": false,
        "hook_v2": false
      }
    },
    {
      "id": "f30",
      "command": "exec gh pr merge 1",
      "label": "exec",
      "deny_rule_default": ["denied", "denied", "denied", "denied"],
      "hook_v1_default": ["blocked", "blocked", "blocked"],
      "allowlist_dontask": "not_run",
      "bypass": {
        "no_rules": true,
        "deny_rule": false,
        "hook_v1": false,
        "hook_v2": false
      }
    }
  ],
  "default_mode_commands": [
    {
      "command": "gh pr view 1",
      "outcome": "確認待ち"
    },
    {
      "command": "gh pr list",
      "outcome": "確認待ち"
    },
    {
      "command": "gh issue view 1",
      "outcome": "確認待ち"
    },
    {
      "command": "gh api repos/o/r",
      "outcome": "確認待ち"
    },
    {
      "command": "gh auth status",
      "outcome": "確認待ち"
    },
    {
      "command": "gh --version",
      "outcome": "確認待ち"
    },
    {
      "command": "gh repo view",
      "outcome": "確認待ち"
    },
    {
      "command": "git status",
      "outcome": "確認なしで実行"
    },
    {
      "command": "git log -1",
      "outcome": "確認なしで実行"
    },
    {
      "command": "git diff",
      "outcome": "確認なしで実行"
    },
    {
      "command": "git branch",
      "outcome": "確認なしで実行"
    },
    {
      "command": "git remote -v",
      "outcome": "確認なしで実行"
    },
    {
      "command": "git show HEAD",
      "outcome": "確認なしで実行"
    },
    {
      "command": "git fetch",
      "outcome": "確認待ち"
    },
    {
      "command": "ls",
      "outcome": "確認なしで実行"
    },
    {
      "command": "cat README.md",
      "outcome": "確認なしで実行"
    },
    {
      "command": "rg foo .",
      "outcome": "確認なしで実行"
    },
    {
      "command": "jq . data.json",
      "outcome": "確認なしで実行"
    },
    {
      "command": "echo hi",
      "outcome": "確認なしで実行"
    },
    {
      "command": "pwd",
      "outcome": "確認なしで実行"
    },
    {
      "command": "date",
      "outcome": "確認なしで実行"
    },
    {
      "command": "whoami",
      "outcome": "確認なしで実行"
    },
    {
      "command": "printenv HOME",
      "outcome": "確認待ち"
    },
    {
      "command": "curl --version",
      "outcome": "確認待ち"
    },
    {
      "command": "aws s3 ls",
      "outcome": "確認待ち"
    },
    {
      "command": "npm --version",
      "outcome": "確認待ち"
    },
    {
      "command": "python3 --version",
      "outcome": "確認なしで実行"
    },
    {
      "command": "sed -n 1p README.md",
      "outcome": "確認なしで実行"
    },
    {
      "command": "head -1 README.md",
      "outcome": "確認なしで実行"
    },
    {
      "command": "find . -name '*.md'",
      "outcome": "確認なしで実行"
    }
  ],
  "allow_rule_matrix": [
    {
      "command": "gh pr view 1",
      "results": {
        "Bash(gh pr view *)": "通る",
        "Bash(gh pr view:*)": "通る",
        "Bash(gh pr view*)": "通る",
        "Bash(gh pr view)": "確認待ち",
        "Bash(gh pr *)": "通る",
        "Bash(gh *)": "通る",
        "Bash(gh pr view 1)": "通る"
      }
    },
    {
      "command": "gh pr view",
      "results": {
        "Bash(gh pr view *)": "通る",
        "Bash(gh pr view:*)": "通る",
        "Bash(gh pr view*)": "通る",
        "Bash(gh pr view)": "通る",
        "Bash(gh pr *)": "通る",
        "Bash(gh *)": "通る",
        "Bash(gh pr view 1)": "確認待ち"
      }
    },
    {
      "command": "gh pr viewer",
      "results": {
        "Bash(gh pr view *)": "確認待ち",
        "Bash(gh pr view:*)": "確認待ち",
        "Bash(gh pr view*)": "通る",
        "Bash(gh pr view)": "確認待ち",
        "Bash(gh pr *)": "通る",
        "Bash(gh *)": "通る",
        "Bash(gh pr view 1)": "確認待ち"
      }
    },
    {
      "command": "gh pr view 1 --json title",
      "results": {
        "Bash(gh pr view *)": "通る",
        "Bash(gh pr view:*)": "通る",
        "Bash(gh pr view*)": "通る",
        "Bash(gh pr view)": "確認待ち",
        "Bash(gh pr *)": "通る",
        "Bash(gh *)": "通る",
        "Bash(gh pr view 1)": "確認待ち"
      }
    },
    {
      "command": "gh pr view 1 | head -5",
      "results": {
        "Bash(gh pr view *)": "通る",
        "Bash(gh pr view:*)": "通る",
        "Bash(gh pr view*)": "通る",
        "Bash(gh pr view)": "確認待ち",
        "Bash(gh pr *)": "通る",
        "Bash(gh *)": "通る",
        "Bash(gh pr view 1)": "通る"
      }
    },
    {
      "command": "gh pr view 1 > out.txt",
      "results": {
        "Bash(gh pr view *)": "確認待ち",
        "Bash(gh pr view:*)": "確認待ち",
        "Bash(gh pr view*)": "確認待ち",
        "Bash(gh pr view)": "確認待ち",
        "Bash(gh pr *)": "確認待ち",
        "Bash(gh *)": "確認待ち",
        "Bash(gh pr view 1)": "確認待ち"
      }
    },
    {
      "command": "GH_TOKEN=x gh pr view 1",
      "results": {
        "Bash(gh pr view *)": "確認待ち",
        "Bash(gh pr view:*)": "確認待ち",
        "Bash(gh pr view*)": "確認待ち",
        "Bash(gh pr view)": "確認待ち",
        "Bash(gh pr *)": "確認待ち",
        "Bash(gh *)": "確認待ち",
        "Bash(gh pr view 1)": "確認待ち"
      }
    },
    {
      "command": "gh --repo o/r pr view 1",
      "results": {
        "Bash(gh pr view *)": "確認待ち",
        "Bash(gh pr view:*)": "確認待ち",
        "Bash(gh pr view*)": "確認待ち",
        "Bash(gh pr view)": "確認待ち",
        "Bash(gh pr *)": "確認待ち",
        "Bash(gh *)": "通る",
        "Bash(gh pr view 1)": "確認待ち"
      }
    },
    {
      "command": "gh pr list",
      "results": {
        "Bash(gh pr view *)": "確認待ち",
        "Bash(gh pr view:*)": "確認待ち",
        "Bash(gh pr view*)": "確認待ち",
        "Bash(gh pr view)": "確認待ち",
        "Bash(gh pr *)": "通る",
        "Bash(gh *)": "通る",
        "Bash(gh pr view 1)": "確認待ち"
      }
    },
    {
      "command": "gh pr merge 1",
      "results": {
        "Bash(gh pr view *)": "確認待ち",
        "Bash(gh pr view:*)": "確認待ち",
        "Bash(gh pr view*)": "確認待ち",
        "Bash(gh pr view)": "確認待ち",
        "Bash(gh pr *)": "通る",
        "Bash(gh *)": "通る",
        "Bash(gh pr view 1)": "確認待ち"
      }
    }
  ],
  "hook_allow_tests": [
    {
      "id": "A0",
      "command": "gh pr view 1",
      "result": "shim-gh: pr view 1"
    },
    {
      "id": "A1",
      "command": "gh pr list --json title,number",
      "result": "shim-gh: pr list --json title,number"
    },
    {
      "id": "A2",
      "command": "gh pr merge 1",
      "result": "This command requires approval"
    },
    {
      "id": "A3",
      "command": "gh pr view 1; gh pr merge 1",
      "result": "This Bash command contains multiple operations. The following parts require approval: gh pr view 1, gh pr merge 1"
    },
    {
      "id": "A4",
      "command": "gh pr view $(gh pr merge 1)",
      "result": "A nested command in this command can't be checked before it runs"
    },
    {
      "id": "A5",
      "command": "GH_TOKEN=x gh pr view 1",
      "result": "This command requires approval"
    },
    {
      "id": "A6",
      "command": "gh pr view 1 > out.txt",
      "result": "Output redirection to '/private/tmp/perm/lab/out.txt' needs approval. The path is inside the working directories for thi"
    },
    {
      "id": "A7",
      "command": "gh pr view 1 | head -3",
      "result": "This Bash command contains multiple operations. The following part requires approval: gh pr view 1"
    },
    {
      "id": "B0",
      "command": "gh pr merge 1",
      "result": "Permission to use Bash with command gh pr merge 1 has been denied."
    },
    {
      "id": "B1",
      "command": "gh -R o/r pr merge 1",
      "result": "shim-gh: -R o/r pr merge 1"
    },
    {
      "id": "B2",
      "command": "gh 'pr' merge 1",
      "result": "shim-gh: pr merge 1"
    },
    {
      "id": "B3",
      "command": "gh pr view 1",
      "result": "shim-gh: pr view 1"
    },
    {
      "id": "C0",
      "command": "gh pr merge 1",
      "result": "PreToolUse:Bash hook error: [/tmp/perm/hook_exit2.sh]: merge is blocked (exit 2)\n"
    },
    {
      "id": "C1",
      "command": "gh -R o/r pr merge 1",
      "result": "PreToolUse:Bash hook error: [/tmp/perm/hook_exit2.sh]: merge is blocked (exit 2)\n"
    },
    {
      "id": "C2",
      "command": "gh pr view 1",
      "result": "shim-gh: pr view 1"
    },
    {
      "id": "C3",
      "command": "gh pr list",
      "result": "shim-gh: pr list"
    }
  ],
  "hook_failure_tests": [
    {
      "id": "E0",
      "command": "gh pr merge 1",
      "ran": false,
      "result": "This command requires approval"
    },
    {
      "id": "E1",
      "command": "gh pr merge 1",
      "ran": false,
      "result": "This command requires approval"
    },
    {
      "id": "E2",
      "command": "gh pr view 1",
      "ran": false,
      "result": "This command requires approval"
    },
    {
      "id": "F0",
      "command": "gh pr merge 1",
      "ran": true,
      "result": "shim-gh: pr merge 1"
    },
    {
      "id": "F1",
      "command": "gh pr merge 1",
      "ran": true,
      "result": "shim-gh: pr merge 1"
    },
    {
      "id": "G0",
      "command": "gh pr merge 1",
      "ran": true,
      "result": "shim-gh: pr merge 1"
    },
    {
      "id": "G1",
      "command": "gh pr merge 1",
      "ran": true,
      "result": "shim-gh: pr merge 1"
    },
    {
      "id": "G2",
      "command": "gh pr merge 1",
      "ran": false,
      "result": "PreToolUse:Bash hook error: [/tmp/perm/hook_exit1.sh]: failed; blocking because onFailure is \"block\"\nmerge should be blo"
    },
    {
      "id": "G3",
      "command": "gh pr view 1",
      "ran": true,
      "result": "shim-gh: pr view 1"
    },
    {
      "id": "G4",
      "command": "gh pr view 1",
      "ran": false,
      "result": "PreToolUse:Bash hook error: [/tmp/perm/nonexistent.sh]: failed; blocking because onFailure is \"block\"\n/bin/sh: /tmp/perm"
    },
    {
      "id": "G5",
      "command": "gh pr view 1",
      "ran": true,
      "result": "shim-gh: pr view 1"
    }
  ],
  "final_config_check": [
    {
      "command": "gh pr view 1",
      "outcome": "実行",
      "message": "shim-gh: pr view 1"
    },
    {
      "command": "gh pr view 1 --json title,mergeable",
      "outcome": "実行",
      "message": "shim-gh: pr view 1 --json title,mergeable"
    },
    {
      "command": "gh pr list",
      "outcome": "実行",
      "message": "shim-gh: pr list"
    },
    {
      "command": "gh pr diff 1",
      "outcome": "実行",
      "message": "shim-gh: pr diff 1"
    },
    {
      "command": "gh run view 1 --log-failed",
      "outcome": "実行",
      "message": "shim-gh: run view 1 --log-failed"
    },
    {
      "command": "gh issue list",
      "outcome": "実行",
      "message": "shim-gh: issue list"
    },
    {
      "command": "gh pr merge 1",
      "outcome": "確認待ち/拒否",
      "message": "PreToolUse:Bash hook error: gh pr merge is blocked by hook"
    },
    {
      "command": "gh -R o/r pr merge 1",
      "outcome": "確認待ち/拒否",
      "message": "PreToolUse:Bash hook error: gh pr merge is blocked by hook"
    },
    {
      "command": "gh 'pr' merge 1",
      "outcome": "確認待ち/拒否",
      "message": "PreToolUse:Bash hook error: gh pr merge is blocked by hook"
    },
    {
      "command": "G=gh; $G pr merge 1",
      "outcome": "確認待ち/拒否",
      "message": "PreToolUse:Bash hook error: merge with shell expansion is blocked by hook"
    },
    {
      "command": "gh issue close 1",
      "outcome": "確認待ち/拒否",
      "message": "Claude requested permissions to use Bash, but you haven't granted it yet."
    },
    {
      "command": "gh pr view 1 > out.txt",
      "outcome": "確認待ち/拒否",
      "message": "Output redirection to '/private/tmp/perm/lab/out.txt' needs approval. The path is inside the working"
    },
    {
      "command": "gh api repos/o/r",
      "outcome": "確認待ち/拒否",
      "message": "This command requires approval"
    },
    {
      "command": "gh pr list --search 'is:merged'",
      "outcome": "実行",
      "message": "shim-gh: pr list --search is:merged"
    },
    {
      "command": "rm -rf build",
      "outcome": "確認待ち/拒否",
      "message": "Permission to use Bash with command rm -rf build has been denied."
    },
    {
      "command": "/bin/rm -rf build",
      "outcome": "確認待ち/拒否",
      "message": "rm in '/private/tmp/perm/lab/build' needs approval. The path is inside the working directories for t"
    },
    {
      "command": "gh pr create --title x --body y",
      "outcome": "確認待ち/拒否",
      "message": "This command requires approval"
    }
  ],
  "allow_rule_compound_tests": {
    "rule": "Bash(gh pr view *)",
    "results": [
      {
        "command": "gh pr view 1; gh pr merge 1",
        "outcome": "確認待ち",
        "message": "This Bash command contains multiple operations. The following part requires approval: gh pr merge 1"
      },
      {
        "command": "gh pr view 1 && gh pr merge 1",
        "outcome": "確認待ち",
        "message": "This Bash command contains multiple operations. The following part requires approval: gh pr merge 1"
      },
      {
        "command": "gh pr view 1 || gh pr merge 1",
        "outcome": "確認待ち",
        "message": "This Bash command contains multiple operations. The following part requires approval: gh pr merge 1"
      },
      {
        "command": "gh pr view 1 | gh pr merge 1",
        "outcome": "確認待ち",
        "message": "This Bash command contains multiple operations. The following part requires approval: gh pr merge 1"
      },
      {
        "command": "gh pr view 1 $(gh pr merge 1)",
        "outcome": "確認待ち",
        "message": "A nested command in this command can't be checked before it runs"
      },
      {
        "command": "gh pr view 1 --json title | sh",
        "outcome": "確認待ち",
        "message": "This Bash command contains multiple operations. The following part requires approval: sh"
      },
      {
        "command": "gh pr view 1 & gh pr merge 1",
        "outcome": "確認待ち",
        "message": "This Bash command contains multiple operations. The following part requires approval: gh pr merge 1"
      },
      {
        "command": "gh pr view 1 --web",
        "outcome": "実行",
        "message": "shim-gh: pr view 1 --web"
      },
      {
        "command": "gh pr view 1 -q '.title' --json title",
        "outcome": "実行",
        "message": "shim-gh: pr view 1 -q .title --json title"
      }
    ]
  }
}
