{
  "env": {
    "CAVEMAN_DEFAULT_MODE": "off"
  },
  "enabledPlugins": {
    "caveman@caveman": false
  },
  "permissions": {
    "allow": [
      "Bash(git status*)",
      "Bash(git diff*)",
      "Bash(git log*)",
      "Bash(git pull*)",
      "Bash(git grep*)",
      "Bash(grep *)",
      "Bash(ls *)",
      "Bash(cat scripts/*)",
      "Bash(cat runbooks/*)",
      "Bash(cat docs/*)",
      "Bash(jq *)",
      "Bash(juju status*)",
      "Bash(juju models*)",
      "Bash(juju machines*)",
      "Bash(juju spaces*)",
      "Bash(juju show-*)",
      "Bash(juju info *)",
      "Bash(maas admin * read*)",
      "Bash(openstack * list*)",
      "Bash(openstack * show*)",
      "Bash(bash scripts/repo-lint.sh*)",
      "Bash(bash scripts/ledger-scan.sh*)",
      "Bash(bash scripts/opentofu-validate.sh*)",
      "Bash(bash scripts/run-tests-all.sh*)",
      "Bash(bash scripts/cloud-assert.sh)",
      "Bash(bash scripts/preflight.sh*)",
      "Bash(python3 scripts/repo_lint.py*)",
      "Bash(python3 scripts/provider-bundle-check.py*)",
      "Bash(python3 scripts/dc-dc-whole-host-budget.py*)",
      "Bash(bash tests/*)",
      "Bash(OPNSENSE_API_HOST=* bash scripts/opnsense-api.sh GET *)",
      "Bash(bash scripts/opnsense-plugins.sh list*)",
      "Bash(bash scripts/creds-audit.sh *)",
      "Bash(bash scripts/dc-dc-ceph-disk-budget.sh *)",
      "Bash(bash scripts/site-baseleg.sh check*)",
      "Bash(tofu validate*)",
      "Bash(tofu -chdir=* validate*)",
      "Bash(tofu state list*)",
      "Bash(tofu -chdir=* state list*)",
      "Bash(tofu state show*)",
      "Bash(tofu providers schema*)",
      "Bash(tofu version*)",
      "Bash(ip route*)",
      "Bash(systemctl is-active *)",
      "Bash(tofu plan*)",
      "Bash(tofu -chdir=* plan*)",
      "Bash(bash scripts/dc-plane-ipam.sh check*)",
      "Bash(bash scripts/octavia-pki.sh verify*)",
      "Bash(bash scripts/dc-node-carve.sh check*)",
      "Bash(python3 scripts/creds-matrix.py*)",
      "Bash(bash scripts/maas-role-tags.sh check*)",
      "Bash(bash scripts/pre-flight-checks.sh*)",
      "Bash(bash scripts/dc-region-topology.sh check*)",
      "Bash(bash scripts/maas-profile-assert.sh *)",
      "Bash(bash scripts/creds-probe.sh --list*)",
      "Bash(bash scripts/dc-cache-proxy.sh check*)",
      "Bash(apt-cache policy *)",
      "Bash(qemu-img info *)",
      "Bash(snap info *)",
      "Bash(snap list *)",
      "Bash(tailscale ip *)",
      "Bash(tailscale status *)",
      "Bash(tofu show *)",
      "Bash(tofu version *)",
      "Bash(git check-ignore *)",
      "Bash(git fetch *)",
      "Bash(ip route show*)",
      "Bash(ip route get *)",
      "Bash(ip neigh show*)",
      "Bash(bridge fdb show*)",
      "Bash(tc qdisc show*)",
      "Bash(ssh *'pgrep *)",
      "Bash(ssh *\"pgrep *)",
      "Bash(ssh *'ps -ef*)",
      "Bash(ssh *\"ps -ef*)",
      "Bash(timeout * ssh *'pgrep *)",
      "Bash(timeout * ssh *\"pgrep *)",
      "Bash(timeout * ssh *'ps -ef*)",
      "Bash(timeout * ssh *\"ps -ef*)",
      "Read(//etc/apparmor.d/abstractions/**)",
      "Read(//etc/apparmor.d/local/abstractions/**)",
      "Read(//etc/libvirt/**)",
      "Read(//etc/sudoers.d/**)",
      "Read(//proc/**)",
      "Read(//snap/**)",
      "Read(//sys/module/apparmor/parameters/**)",
      "Read(//sys/module/kvm_amd/parameters/**)",
      "Read(//sys/module/kvm_intel/parameters/**)",
      "Read(//var/lib/dpkg/**)",
      "Read(//var/lib/libvirt/**)",
      "Read(//var/log/libvirt/qemu/**)",
      "Read(//tmp/**)"
    ],
    "ask": [
      "Bash(juju destroy-model *)",
      "Bash(juju remove-machine *)",
      "Bash(juju remove-application *)",
      "Bash(juju remove-unit *)",
      "Bash(juju run *)",
      "Bash(juju ssh *)",
      "Bash(juju exec *)",
      "Bash(juju config * *=*)",
      "Bash(juju attach-resource *)",
      "Bash(juju deploy *)",
      "Bash(juju add-model *)",
      "Bash(maas admin machine delete *)",
      "Bash(maas admin * update*)",
      "Bash(maas admin * create*)",
      "Bash(maas admin * release*)",
      "Bash(openstack * create*)",
      "Bash(openstack * delete*)",
      "Bash(openstack * set*)",
      "Bash(openstack * unset*)",
      "Bash(* --apply*)",
      "Bash(git commit*)",
      "Bash(git push*)",
      "Bash(sudo *)",
      "Bash(virsh *)",
      "Bash(rm *)",
      "Bash(*opnsense-api.sh POST *)",
      "Bash(*opnsense-plugins.sh apply*)",
      "Bash(*tofu apply*)",
      "Bash(*tofu destroy*)",
      "Bash(*tofu import*)",
      "Bash(*tofu state rm*)",
      "Bash(*--commit*)",
      "Bash(git merge*)",
      "Bash(git revert*)",
      "Bash(git reset*)",
      "Bash(git rebase*)",
      "Bash(git branch -D *)",
      "Bash(bash scripts/* apply*)",
      "Bash(bash scripts/* install*)",
      "Bash(ssh * sudo *)",
      "Bash(ssh *'sudo *)",
      "Bash(ssh *\"sudo *)",
      "Bash(ssh *sudo -n *)",
      "Bash(*creds-matrix.py *--privileged*)",
      "Bash(scp *)",
      "Bash(* | ssh *)",
      "Bash(ssh * virsh *)",
      "Bash(ssh *'virsh *)",
      "Bash(ssh *\"virsh *)",
      "Skill(*)",
      "Edit(.claude/settings.json)",
      "Edit(.claude/settings.local.json)"
    ],
    "deny": [
      "Bash(vault operator init*)",
      "Bash(vault operator rekey*)",
      "Bash(vault operator generate-root*)",
      "Bash(juju destroy-controller *)",
      "Bash(maas list*)",
      "Bash(git push --force*)",
      "Bash(git push -f*)",
      "Bash(*python3 -m scripts*)",
      "Bash(*caveman-compress*)",
      "Read(~/vault-init/**)",
      "Read(~/as-executed/**)",
      "Read(~/tenant-*/**)",
      "Read(**/*-cred.txt)",
      "Read(**/*appcred*)",
      "Edit(~/vault-init/**)"
    ]
  },
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "python3 \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/guard-destructive.py"
          }
        ]
      }
    ]
  }
}
