Security
Full shell access
In full mode, Poke Gate grants full shell access to your Poke agent. Understand the implications before running it — or choose a more restrictive mode.
Access modes
Poke Gate supports three access modes that control what tools your agent can use:
Full (default)
All tools are available with no approval required. The agent can run commands, write files, and take screenshots directly.
Limited
Only safe, read-only tools are available:
read_file,read_image,list_directory,system_info,network_speedwork normallyrun_commandis restricted to a curated allowlist:ls,pwd,cat,grep,find,head,tail,wc,sed,awk,curl,jq,diff, and otherswrite_fileandtake_screenshotare disabled- Dangerous patterns (
sudo,rm -rf, etc.) are always blocked
Sandbox
Broader command support than Limited, plus commands like brew, node, python, ffmpeg, mkdir, cp, mv:
run_commanduses macOSsandbox-execto restrict file writes to~/Downloadsand/tmpwrite_fileandtake_screenshotare disabled- Dangerous patterns are always blocked
Setting the mode
CLI:
npx poke-gate --mode limited
npx poke-gate --mode sandboxEnvironment variable:
POKE_GATE_PERMISSION_MODE=sandbox npx poke-gatemacOS app: Open Settings and select the access mode. The app restarts automatically when you change it.
Tool approval flow
In limited and sandbox modes, risky tools (run_command, write_file, take_screenshot) use an HMAC-signed approval flow:
- The agent calls the tool — Poke Gate returns
AWAITING_APPROVALwith a signed token - The agent asks you in chat to approve
- You approve — the agent re-calls the tool with the approval token
- Optionally, you can
remember_in_session(same command) orremember_all_risky(all risky tools for the session)
In full mode, all tools execute directly without approval.
What protects you
- Authentication — only your Poke agent (authenticated via Poke OAuth) can reach the tunnel
- Tunnel isolation — the MCP server only listens on
127.0.0.1(localhost), not exposed to the network - Chat approval — risky tools require explicit approval before execution (in full mode)
- Access policies — limited and sandbox modes enforce strict command allowlists
- Loop guard — duplicate or recently-failed commands are suppressed to prevent runaway retries
- No persistent access — quitting Poke Gate closes the tunnel and deletes the connection
- Connection cleanup — old connections are deleted before new ones are created
Best practices
- Choose the right access mode — use
limitedorsandboxif you don't need full shell access. - Only run on trusted machines — don't run Poke Gate on shared or public computers.
- Quit when not needed — close the app when you don't need remote access.
- Review agent scripts — before installing a community agent, read the code. Agents run with your user permissions.
- Keep env files secure —
.envfiles in~/.config/poke-gate/agents/may contain API tokens. Don't commit them to git. - Use verbose mode — run with
--verboseto see what tools are being called in real time.
Reporting issues
If you discover a security vulnerability, please email security@fka.dev instead of opening a public issue.
