{
  "hooks": {
    "PreToolUse": [
      {
        "hooks": [
          {
            "command": "bash \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/session-write-guard.sh\"",
            "timeout": 5,
            "type": "command"
          },
          {
            "command": "bash \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/session-read-guard.sh\"",
            "timeout": 5,
            "type": "command"
          }
        ],
        "matcher": "Bash"
      },
      {
        "hooks": [
          {
            "command": "bash \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/session-read-guard.sh\"",
            "timeout": 5,
            "type": "command"
          }
        ],
        "matcher": "Read"
      },
      {
        "hooks": [
          {
            "command": "bash \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/session-read-guard.sh\"",
            "timeout": 5,
            "type": "command"
          }
        ],
        "matcher": "Grep"
      },
      {
        "hooks": [
          {
            "command": "bash \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/session-write-guard.sh\"",
            "timeout": 5,
            "type": "command"
          }
        ],
        "matcher": "Write"
      },
      {
        "hooks": [
          {
            "command": "bash \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/session-write-guard.sh\"",
            "timeout": 5,
            "type": "command"
          }
        ],
        "matcher": "Edit|MultiEdit"
      },
      {
        "hooks": [
          {
            "command": "bash \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/bob-http-write-confirm.sh\"",
            "timeout": 5,
            "type": "command"
          }
        ],
        "matcher": "mcp__hacker-bob__bob_http_scan"
      },
      {
        "hooks": [
          {
            "command": "node \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/agent-run-stop.js\"",
            "timeout": 5,
            "type": "command"
          }
        ],
        "matcher": "mcp__hacker-bob__bob_write_wave_handoff|mcp__hacker-bob__bob_finalize_agent_run|Agent|Task"
      }
    ],
    "SessionStart": [
      {
        "hooks": [
          {
            "command": "node \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/bob-check-update.js\" \"${CLAUDE_PROJECT_DIR:-$PWD}\"",
            "timeout": 2,
            "type": "command"
          }
        ],
        "matcher": "startup"
      }
    ],
    "SubagentStart": [
      {
        "hooks": [
          {
            "command": "node \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/agent-run-start.js\"",
            "timeout": 5,
            "type": "command"
          }
        ],
        "matcher": "evaluator-agent"
      },
      {
        "hooks": [
          {
            "command": "node \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/agent-run-start.js\"",
            "timeout": 5,
            "type": "command"
          }
        ],
        "matcher": "evaluator-fanout"
      },
      {
        "hooks": [
          {
            "command": "node \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/agent-run-start.js\"",
            "timeout": 5,
            "type": "command"
          }
        ],
        "matcher": "evaluator-evm-agent"
      },
      {
        "hooks": [
          {
            "command": "node \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/agent-run-start.js\"",
            "timeout": 5,
            "type": "command"
          }
        ],
        "matcher": "evaluator-svm-agent"
      },
      {
        "hooks": [
          {
            "command": "node \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/agent-run-start.js\"",
            "timeout": 5,
            "type": "command"
          }
        ],
        "matcher": "evaluator-move-agent"
      },
      {
        "hooks": [
          {
            "command": "node \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/agent-run-start.js\"",
            "timeout": 5,
            "type": "command"
          }
        ],
        "matcher": "evaluator-substrate-agent"
      },
      {
        "hooks": [
          {
            "command": "node \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/agent-run-start.js\"",
            "timeout": 5,
            "type": "command"
          }
        ],
        "matcher": "evaluator-cosmwasm-agent"
      }
    ],
    "SubagentStop": [
      {
        "hooks": [
          {
            "command": "node \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/agent-run-stop.js\"",
            "timeout": 10,
            "type": "command"
          }
        ],
        "matcher": "evaluator-agent"
      },
      {
        "hooks": [
          {
            "command": "node \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/agent-run-stop.js\"",
            "timeout": 10,
            "type": "command"
          }
        ],
        "matcher": "evaluator-fanout"
      },
      {
        "hooks": [
          {
            "command": "node \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/agent-run-stop.js\"",
            "timeout": 10,
            "type": "command"
          }
        ],
        "matcher": "evaluator-evm-agent"
      },
      {
        "hooks": [
          {
            "command": "node \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/agent-run-stop.js\"",
            "timeout": 10,
            "type": "command"
          }
        ],
        "matcher": "evaluator-svm-agent"
      },
      {
        "hooks": [
          {
            "command": "node \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/agent-run-stop.js\"",
            "timeout": 10,
            "type": "command"
          }
        ],
        "matcher": "evaluator-move-agent"
      },
      {
        "hooks": [
          {
            "command": "node \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/agent-run-stop.js\"",
            "timeout": 10,
            "type": "command"
          }
        ],
        "matcher": "evaluator-substrate-agent"
      },
      {
        "hooks": [
          {
            "command": "node \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/agent-run-stop.js\"",
            "timeout": 10,
            "type": "command"
          }
        ],
        "matcher": "evaluator-cosmwasm-agent"
      },
      {
        "hooks": [
          {
            "command": "node \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/agent-run-stop.js\"",
            "timeout": 10,
            "type": "command"
          }
        ],
        "matcher": "evaluator-fanout-child"
      }
    ]
  },
  "permissions": {
    "allow": [
      "mcp__hacker-bob__bob_read_http_audit",
      "mcp__hacker-bob__bob_read_surface_routes",
      "mcp__hacker-bob__bob_import_static_artifact",
      "mcp__hacker-bob__bob_static_scan",
      "mcp__hacker-bob__bob_ingest_sarif",
      "mcp__hacker-bob__bob_read_static_analysis_index",
      "mcp__hacker-bob__bob_record_candidate_claim",
      "mcp__hacker-bob__bob_record_physical_candidate_claim",
      "mcp__hacker-bob__bob_read_candidate_claims",
      "mcp__hacker-bob__bob_list_candidate_claims",
      "mcp__hacker-bob__bob_write_chain_attempt",
      "mcp__hacker-bob__bob_read_chain_attempts",
      "mcp__hacker-bob__bob_write_verification_round",
      "mcp__hacker-bob__bob_stage_verification_round_partial",
      "mcp__hacker-bob__bob_read_verification_round",
      "mcp__hacker-bob__bob_read_verification_context",
      "mcp__hacker-bob__bob_write_evidence_packs",
      "mcp__hacker-bob__bob_read_evidence_packs",
      "mcp__hacker-bob__bob_write_grade_verdict",
      "mcp__hacker-bob__bob_read_grade_verdict",
      "mcp__hacker-bob__bob_query_instrument_capabilities",
      "mcp__hacker-bob__bob_read_session_state",
      "mcp__hacker-bob__bob_read_session_nucleus",
      "mcp__hacker-bob__bob_write_wave_handoff",
      "mcp__hacker-bob__bob_finalize_agent_run",
      "mcp__hacker-bob__bob_wave_handoff_status",
      "mcp__hacker-bob__bob_read_wave_handoffs",
      "mcp__hacker-bob__bob_log_dead_ends",
      "mcp__hacker-bob__bob_log_coverage",
      "mcp__hacker-bob__bob_wave_status",
      "mcp__hacker-bob__bob_auth_store",
      "mcp__hacker-bob__bob_list_auth_profiles",
      "mcp__hacker-bob__bob_read_state_summary",
      "mcp__hacker-bob__bob_read_session_summary",
      "mcp__hacker-bob__bob_read_assignment_brief",
      "mcp__hacker-bob__bob_read_capability_playbook",
      "mcp__hacker-bob__bob_get_context_budget",
      "mcp__hacker-bob__bob_select_technique_packs",
      "mcp__hacker-bob__bob_read_technique_pack",
      "mcp__hacker-bob__bob_log_technique_attempt",
      "mcp__hacker-bob__bob_record_surface_leads",
      "mcp__hacker-bob__bob_read_surface_leads",
      "mcp__hacker-bob__bob_verify_physical_verdict",
      "mcp__hacker-bob__bob_verify_physical_candidate_claim",
      "mcp__hacker-bob__bob_log_capability_friction",
      "mcp__hacker-bob__bob_log_protocol_drift",
      "Bash(mkdir *)",
      "Bash(test *)",
      "Bash(cat *)",
      "Bash(ls *)",
      "Bash(sort *)",
      "Bash(wc *)",
      "Bash(head *)",
      "Bash(tail *)",
      "Bash(jq *)",
      "Bash(printf *)",
      "Bash(echo *)",
      "Read",
      "Glob",
      "Grep",
      "mcp__hacker-bob__bob_http_scan",
      "mcp__hacker-bob__bob_http_confirm",
      "mcp__hacker-bob__bob_http_cors_confirm",
      "mcp__hacker-bob__bob_http_massread_confirm",
      "mcp__hacker-bob__bob_http_idor_confirm",
      "mcp__hacker-bob__bob_http_xss_reflect",
      "mcp__hacker-bob__bob_http_xss_confirm",
      "mcp__hacker-bob__bob_oob_mint",
      "mcp__hacker-bob__bob_oob_poll",
      "mcp__hacker-bob__bob_secondorder_mint",
      "mcp__hacker-bob__bob_secondorder_reread",
      "mcp__hacker-bob__bob_nuclei_scan",
      "mcp__hacker-bob__bob_start_next_wave",
      "mcp__hacker-bob__bob_start_wave",
      "mcp__hacker-bob__bob_route_surfaces",
      "mcp__hacker-bob__bob_import_http_traffic",
      "mcp__hacker-bob__bob_public_intel",
      "mcp__hacker-bob__bob_ingest_schema_doc",
      "mcp__hacker-bob__bob_query_schema_contracts",
      "mcp__hacker-bob__bob_run_doc_delta",
      "mcp__hacker-bob__bob_read_doc_delta_results",
      "mcp__hacker-bob__bob_run_auth_differential",
      "mcp__hacker-bob__bob_read_auth_differential_results",
      "mcp__hacker-bob__bob_append_chain_node",
      "mcp__hacker-bob__bob_query_chain_tree",
      "mcp__hacker-bob__bob_chain_frontier",
      "mcp__hacker-bob__bob_chain_ancestry",
      "mcp__hacker-bob__bob_diff_verification_attempts",
      "mcp__hacker-bob__bob_build_verification_adjudication",
      "mcp__hacker-bob__bob_write_proof_bundle",
      "mcp__hacker-bob__bob_init_session",
      "mcp__hacker-bob__bob_init_repo_session",
      "mcp__hacker-bob__bob_init_contract_session",
      "mcp__hacker-bob__bob_init_physical_session",
      "mcp__hacker-bob__bob_repo_inventory",
      "mcp__hacker-bob__bob_repo_prepare_env",
      "mcp__hacker-bob__bob_repo_docker_run",
      "mcp__hacker-bob__bob_repo_check",
      "mcp__hacker-bob__bob_import_harness",
      "mcp__hacker-bob__bob_import_seed_corpus",
      "mcp__hacker-bob__bob_advance_session",
      "mcp__hacker-bob__bob_apply_wave_merge",
      "mcp__hacker-bob__bob_write_handoff",
      "mcp__hacker-bob__bob_temp_email",
      "mcp__hacker-bob__bob_signup_detect",
      "mcp__hacker-bob__bob_auto_signup",
      "mcp__hacker-bob__bob_set_operator_note",
      "mcp__hacker-bob__bob_clear_operator_note",
      "mcp__hacker-bob__bob_clear_terminal_block",
      "mcp__hacker-bob__bob_finalize_report",
      "mcp__hacker-bob__bob_compose_report",
      "mcp__hacker-bob__bob_amend_report",
      "mcp__hacker-bob__bob_write_chain_rollup",
      "mcp__hacker-bob__bob_set_friction_scanners",
      "mcp__hacker-bob__bob_read_tool_telemetry",
      "mcp__hacker-bob__bob_read_pipeline_analytics",
      "mcp__hacker-bob__bob_read_capability_metrics",
      "mcp__hacker-bob__bob_evaluate_capabilities",
      "mcp__hacker-bob__bob_ingest_audit_report",
      "mcp__hacker-bob__bob_query_audit_reports",
      "mcp__hacker-bob__bob_register_mechanism_template",
      "mcp__hacker-bob__bob_suggest_invariants",
      "mcp__hacker-bob__bob_run_invariant_for_finding",
      "mcp__hacker-bob__bob_read_invariant_runs",
      "mcp__hacker-bob__bob_extract_routes",
      "mcp__hacker-bob__bob_build_symbol_surface_index",
      "mcp__hacker-bob__bob_summarize_diff_impact",
      "mcp__hacker-bob__bob_evm_call",
      "mcp__hacker-bob__bob_evm_storage_read",
      "mcp__hacker-bob__bob_evm_fetch_source",
      "mcp__hacker-bob__bob_evm_role_table",
      "mcp__hacker-bob__bob_foundry_run",
      "mcp__hacker-bob__bob_halmos_run",
      "mcp__hacker-bob__bob_svm_fetch_account",
      "mcp__hacker-bob__bob_svm_fetch_program",
      "mcp__hacker-bob__bob_anchor_run",
      "mcp__hacker-bob__bob_aptos_fetch_resource",
      "mcp__hacker-bob__bob_aptos_fetch_module",
      "mcp__hacker-bob__bob_aptos_run",
      "mcp__hacker-bob__bob_sui_fetch_object",
      "mcp__hacker-bob__bob_sui_fetch_package",
      "mcp__hacker-bob__bob_sui_run",
      "mcp__hacker-bob__bob_substrate_run",
      "mcp__hacker-bob__bob_substrate_fetch_storage",
      "mcp__hacker-bob__bob_substrate_fetch_runtime",
      "mcp__hacker-bob__bob_cosmwasm_run",
      "mcp__hacker-bob__bob_cosmwasm_fetch_contract",
      "mcp__hacker-bob__bob_cosmwasm_smart_query",
      "mcp__hacker-bob__bob_promote_surface_leads",
      "mcp__hacker-bob__bob_build_surface_graph",
      "mcp__hacker-bob__bob_query_surface_graph",
      "mcp__hacker-bob__bob_read_belief_signals",
      "mcp__hacker-bob__bob_query_belief_signals",
      "mcp__hacker-bob__bob_query_belief_window",
      "mcp__hacker-bob__bob_run_belief_sampler",
      "mcp__hacker-bob__bob_run_belief_residual",
      "mcp__hacker-bob__bob_query_intervention_calculus",
      "mcp__hacker-bob__bob_plan_belief_experiment",
      "mcp__hacker-bob__bob_compile_contract_binding",
      "mcp__hacker-bob__bob_train_belief_model",
      "mcp__hacker-bob__bob_read_belief_model_info",
      "mcp__hacker-bob__bob_elicit_belief",
      "mcp__hacker-bob__bob_append_frontier_event",
      "mcp__hacker-bob__bob_propose_hypothesis",
      "mcp__hacker-bob__bob_propose_transition",
      "mcp__hacker-bob__bob_materialize_task_graph",
      "mcp__hacker-bob__bob_materialize_cell_floor",
      "mcp__hacker-bob__bob_read_task_graph",
      "mcp__hacker-bob__bob_read_composition_telemetry",
      "mcp__hacker-bob__bob_run_path_composition_experiment",
      "mcp__hacker-bob__bob_verify_composition_path",
      "mcp__hacker-bob__bob_verify_repro_reproduction",
      "mcp__hacker-bob__bob_verify_oracle_differential",
      "mcp__hacker-bob__bob_verify_invariant_differential",
      "mcp__hacker-bob__bob_verify_finding_differential",
      "mcp__hacker-bob__bob_physical_observe",
      "mcp__hacker-bob__bob_credential_acquire",
      "mcp__hacker-bob__bob_credential_recover",
      "mcp__hacker-bob__bob_credential_emulate",
      "mcp__hacker-bob__bob_credential_write",
      "mcp__hacker-bob__bob_protocol_transceive",
      "mcp__hacker-bob__bob_rf_trace",
      "mcp__hacker-bob__bob_attach_contract",
      "mcp__hacker-bob__bob_resolve_body",
      "mcp__hacker-bob__bob_prepare_node",
      "mcp__hacker-bob__bob_finalize_node",
      "mcp__hacker-bob__bob_schedule_graph_nodes",
      "mcp__hacker-bob__bob_materialize_producer_floor",
      "mcp__hacker-bob__bob_schedule_seed_producers",
      "mcp__hacker-bob__bob_materialize_frontier",
      "mcp__hacker-bob__bob_read_queue_policy",
      "mcp__hacker-bob__bob_set_queue_policy",
      "mcp__hacker-bob__bob_schedule_tasks",
      "mcp__hacker-bob__bob_browser_session_start",
      "mcp__hacker-bob__bob_browser_navigate",
      "mcp__hacker-bob__bob_browser_snapshot",
      "mcp__hacker-bob__bob_browser_click",
      "mcp__hacker-bob__bob_browser_type",
      "mcp__hacker-bob__bob_browser_evaluate",
      "mcp__hacker-bob__bob_browser_network_requests",
      "mcp__hacker-bob__bob_browser_console_messages",
      "mcp__hacker-bob__bob_browser_wait_for",
      "mcp__hacker-bob__bob_browser_press_key",
      "mcp__hacker-bob__bob_browser_take_screenshot",
      "mcp__hacker-bob__bob_browser_fill_form",
      "mcp__hacker-bob__bob_browser_session_close",
      "mcp__hacker-bob__bob_browser_session_start_recording",
      "mcp__hacker-bob__bob_browser_flush_recorded_requests",
      "mcp__hacker-bob__bob_set_pack_telemetry_config",
      "mcp__hacker-bob__bob_emit_runtime_drift",
      "mcp__hacker-bob__bob_propose_friction_promotion",
      "mcp__hacker-bob__bob_scan_transcript_for_friction",
      "mcp__hacker-bob__bob_ws_probe",
      "mcp__hacker-bob__bob_plan_recon_angles"
    ]
  },
  "statusLine": {
    "command": "node \"${CLAUDE_PROJECT_DIR:-$PWD}/.claude/hooks/bob-statusline.js\"",
    "type": "command"
  }
}
