Reachable by default
Your admin panel, your database GUI, your
.env, the rest of your dev site —
none of it is reachable through the tunnel unless you pass --all-paths.
Who can reach the URL
Anyone who has it. The slug is unguessable, but it is not a secret: it appears in your terminal, in the inspector, and in the config file of every client you paste it into. Treat the URL as unlisted, not private. If the data behind it matters, add--bearer.
What HeyMCP sees
The edge parses MCP frames as they pass, which is how the timeline exists. That means:- Request and response payloads are stored for the length of your retention window — 24 hours on Hobby, 7 days on Pro. That includes tool arguments and tool results.
- Payloads over 256 KB are truncated in storage, but forwarded to the client whole.
- Bearer tokens are not stored. The
Authorizationheader is stripped at the edge before anything else happens, and only the fact that one was required is recorded.
heymcp export gets you a copy; closing
the session doesn’t delete history early.
What your local server sees
Requests arrive as ordinary local HTTP, with:- The
Hostheader rewritten to your local target X-Forwarded-Hostset to the public hostnameX-Forwarded-Proto: https- Any
Authorizationheader removed if you used--bearer content-type,accept,mcp-session-id,user-agentandmcp-protocol-versionpreserved as sent
content-length and transfer-encoding are dropped and
regenerated, as any proxy must.
--all-paths
--bearer.
Reducing exposure
Close the tunnel
Ctrl-C. The URL immediately returns 503. Nothing is reachable while
heymcp share isn’t running.Use --bearer
One flag, works with every client but Claude.ai.
Point at a scratch server
If you’re debugging schemas rather than data, a fixture server is a better
target than your real app.
Roll your CLI token
From your profile page, if the token was ever exposed.