If you discover a security issue, please do not open a public GitHub issue.
Contact the maintainer privately via GitHub Security Advisories or direct message.
PhoneConnect bridges a Cursor Cloud Agent to an Android device running PocketMCP over Tailscale:
- Tailscale pre-auth key (
TAILSCALE_AUTH_KEY) — grants network access to your tailnet. Treat as a secret; use ephemeral/reusable keys with minimal scope. - PocketMCP API key (
POCKET_MCP_API_KEY) — sent asX-API-Keyon every request to the phone. Anyone with this key and tailnet access can control the device. - No app-level user authentication — security depends on tailnet membership, API keys, and who can run the cloud agent environment.
Traffic from the cloud agent to the phone must use Tailscale SOCKS5 (127.0.0.1:1055). Direct TCP to the phone IP often fails and bypasses the intended path.
- Never commit real keys — use
config/secrets.env.exampleas a template only. - Store secrets in Cursor Dashboard → Environment → Secrets, not in HTML, scripts, or git.
- Use a dedicated Tailscale auth key and PocketMCP API key per environment; rotate if exposed.
- Restrict tailnet ACLs so only trusted devices/users can reach the phone.
- The cloud agent can invoke PocketMCP tools (tap, launch apps, read screen state) — only connect devices you are willing to automate.
Revoke and rotate immediately:
- Tailscale: Admin console → Keys
- PocketMCP: regenerate the API key in the app on the device