{
  "permissions": {
    "allow": [
      "Bash(lk --version)",
      "Bash(lk project)",
      "Bash(lk app *)",
      "Bash(lk docs *)",
      "Bash(grep -iA2 -B1 \"anthropic\\\\|claude\")",
      "Bash(grep -iB1 -A1 \"anthropic\\\\|claude\")",
      "Bash(grep -iB1 -A1 \"claude-\\\\|model=\\\\|gateway\\\\|inference\")",
      "Bash(grep -iB2 -A8 \"inference\")",
      "Bash(grep -iA40 \"Model family\")",
      "Bash(uv add *)",
      "Bash(uv run *)",
      "Read(//private/tmp/**)",
      "Bash(curl -s https://unpkg.com/livekit-client/package.json)",
      "Bash(curl -s https://unpkg.com/livekit-client/dist/livekit-client.umd.js -o lkclient.umd.js)",
      "Bash(curl -sL https://unpkg.com/livekit-client/dist/livekit-client.umd.js -o lkclient.umd.js)",
      "Bash(grep -o 'serverUrl:[a-zA-Z0-9_.]\\\\{1,30\\\\}' lkclient.umd.js)",
      "Bash(grep -o 'participantToken:[a-zA-Z0-9_.]\\\\{1,30\\\\}' lkclient.umd.js)",
      "Bash(grep -oE '.{120}participantToken:[^,}]{1,40}' lkclient.umd.js)",
      "Bash(grep -o '.\\\\{30\\\\}toJson\\(.\\\\{0,30\\\\}.\\\\{40\\\\}' lkclient.umd.js)",
      "Bash(grep -o 'update\\(e\\){return Zi\\(this,void 0,void 0,\\(function\\\\*\\(\\){var t;const n=this.createRequestFromOptions\\(e\\).\\\\{400\\\\}' lkclient.umd.js)",
      "Bash(npm install *)",
      "Bash(lsof -ti:8081)",
      "Bash(xargs kill)",
      "Bash(tmole 8081 *)",
      "Bash(curl -s -o /dev/null -w \"%{http_code}\\\\n\" http://localhost:8081/creation/index.html)",
      "Bash(curl -s -X POST http://localhost:8081/getToken -H \"Content-Type: application/json\" -d '{\"room_name\":\"test\",\"room_config\":{\"agents\":[{\"agent_name\":\"r1-claude\"}]}}')",
      "Bash(python3 -c \"import sys,json; d=json.load\\(sys.stdin\\); print\\('server_url:', d.get\\('server_url'\\)\\); print\\('participant_token present:', bool\\(d.get\\('participant_token'\\)\\), 'len', len\\(d.get\\('participant_token',''\\)\\)\\)\")",
      "Bash(curl -s -o /dev/null -w \"%{http_code}\\\\n\" https://v7qg6f-ip-99-76-59-67.tunnelmole.net/creation/install.html)",
      "Bash(git check-ignore *)",
      "Bash(say --data-format=LEI16@24000 -o /tmp/q_probe.wav \"test one two\")",
      "Bash(python3 -c \"import wave; w=wave.open\\('/tmp/q_probe.wav'\\); print\\('rate',w.getframerate\\(\\),'ch',w.getnchannels\\(\\),'width',w.getsampwidth\\(\\),'frames',w.getnframes\\(\\)\\)\")",
      "Bash(say --data-format=LEI16@24000 -o /tmp/q.wav \"Hey Claude, what is the capital of France?\")",
      "Bash(pkill -f \"agent.py dev\")",
      "Bash(grep -iB1 -A6 \"is_function_call\\\\|mock_tool\\\\|mock_too\\\\|function call\\\\|FunctionCall\")",
      "Bash(grep -iB1 -A6 \"function_call\\\\|mock\")",
      "Bash(curl -s https://v7qg6f-ip-99-76-59-67.tunnelmole.net/creation/index.html)",
      "Read(//Users/mitch_tango/.claude/**)",
      "Read(//Users/mitch_tango/.claude/skills/**)",
      "Bash(grep -iB1 -A4 \"return\\\\|handoff\\\\|Agent\\(\")",
      "Bash(grep -rn 'function_tool\\\\|_discover\\\\|get_function_tools\\\\|__dict__\\\\|dir\\(self\\)\\\\|inspect.getmembers\\\\|update_tools\\\\|def tools' __TRACKED_VAR__/voice/agent.py)",
      "Bash(grep -iB2 -A10 \"def \\\\|return \\\\|Agent\\(\")",
      "Bash(grep -iB1 -A18 \"function_tool\\\\|def \\\\|return\")",
      "Bash(grep -nB3 -A12 \"@function_tool\")",
      "Bash(MT_VAULT=/tmp/jessica-test-vault uv run python src/agent.py dev)",
      "Bash(cp '/tmp/jessica-test-vault/Tasks/Grocery List.md' '/Users/mitch_tango/Obsidian/MT_Vault/Tasks/Grocery List.md')",
      "Read(//Users/mitch_tango/Obsidian/MT_Vault/**)",
      "Bash(grep -n \"## Jessica Voice Inbox\\\\|Jessica Inbox.md\\\\` \\(vault root\\)\\\\|| \\\\`Jessica Inbox.md\\\\`\" SKILL.md)",
      "Bash(curl -sL -o /dev/null -w \"%{http_code}\\\\n\" \"https://unpkg.com/qr-code-styling@1.6.0/lib/qr-code-styling.js\")",
      "Bash(curl -s -o /dev/null -w \"%{http_code}\\\\n\" \"https://v7qg6f-ip-99-76-59-67.tunnelmole.net/creation/install.html\")",
      "Bash(curl -s -o /dev/null -w \"%{http_code}\\\\n\" \"https://v7qg6f-ip-99-76-59-67.tunnelmole.net/creation/\")",
      "Bash(pkill -f \"tmole 8081\")",
      "Bash(break)",
      "Bash(tailscale status *)",
      "Bash(python3 -c \"import sys,json; d=json.load\\(sys.stdin\\); s=d.get\\('Self',{}\\); print\\('BackendState:', d.get\\('BackendState'\\)\\); print\\('DNSName:', s.get\\('DNSName'\\)\\); print\\('Funnel-capable caps:', [c for c in \\(s.get\\('CapMap'\\) or {}\\) ] if isinstance\\(s.get\\('CapMap'\\),dict\\) else 'n/a'\\)\")",
      "Bash(timeout 8 tailscale funnel status)",
      "Bash(tailscale funnel *)",
      "Bash(tailscale serve *)",
      "Bash(echo \"web: $\\(lsof -ti:8081 >/dev/null && echo UP || echo DOWN\\) | agent: $\\(pgrep -f 'agent.py dev' >/dev/null && echo UP || echo DOWN\\) | funnel: $\\(tailscale funnel status >/dev/null 2>&1 && echo ON || echo off\\)\")",
      "Bash(curl -s -o /dev/null -w '%{http_code}' --max-time 20 https://maitlands-mac-mini.tailb4c264.ts.net/creation/install.html)",
      "WebSearch"
    ]
  }
}
