pair-agent
“Pair a remote AI agent with your browser. (gstack)”
aipkg.jsonLICENSE.txtREADME.mdSKILL.mdSKILL.md.tmpl- 01SQP-270%HIGH
SKILL.md:749
detailhide
When pairing with a remote agent, the skill generates a setup key and instruction block containing credentials. The user is instructed to copy-paste this into another agent without explicit warning about what information is being shared. An inattentive user could paste credentials into an untrusted agent, a public channel, or log them unencrypted. The 5-minute expiration mitigates but does not eliminate the risk.
747## How it works748749Your gstack browser runs a local HTTP server. This skill creates a one-time setup key,750prints a block of instructions, and you paste those instructions into the other agent.751The other agent exchanges the key for a session token, creates its own tab, and startsfix Add an explicit warning before printing the instruction block: 'WARNING: The instruction block below contains a one-time setup key that grants browser access. Treat it like a password: do not share with untrusted parties, do not log it publicly, do not paste into unsecured channels. It expires in 5 minutes.' Recommend the user verify the destination agent's identity before sharing credentials.
- 02SQP-260%MEDIUM
SKILL.md:1008
detailhide
The 'revoke' and 'rotate' commands are destructive operations that immediately invalidate all session tokens. No confirmation prompt is shown. A user could accidentally type '/pair-agent' and follow through the workflow, then rotate all tokens unintentionally, disconnecting all remote agents without recovery option. The 'rotate' command especially warrants confirmation.
1006```10071008To disconnect all agents and rotate the root token:10091010```bashfix Before executing 'rotate', fire an AskUserQuestion: 'This will immediately invalidate ALL remote agent sessions (no recovery). Continue?' Require explicit confirmation. For 'revoke', at minimum confirm which agent is being revoked.
- 03SQP-285%HIGH
SKILL.md.tmpl:212
detailhide
The skill advertises admin access that grants JavaScript execution and cookie/storage access without adequately warning users about the security implications. Granting another agent unrestricted access to sensitive browser data (auth tokens, session cookies, stored credentials) can lead to account compromise and data theft.
210- Cannot execute arbitrary JavaScript, read cookies, or access storage211212With admin access (--admin flag):213- Everything above, plus JS execution, cookie access, storage access214- Use sparingly. Only for agents you fully trust.fix Add explicit warning before admin access documentation: 'WARNING: Admin access allows the remote agent to execute arbitrary JavaScript and read all cookies and storage. Only grant this to agents you completely trust. This effectively gives them your login credentials and access to all sensitive data on visited sites.'
- 04SQP-280%MEDIUM
SKILL.md.tmpl:160
detailhide
The skill instructs users to paste their ngrok authentication token into the setup process without warning about token exposure risks. If the token is captured, leaked, or logged, an attacker could tunnel malicious content or intercept traffic. The instructions also don't mention token rotation or revocation.
158**If ngrok is installed but NOT authed:** Walk the user through authentication:159160Tell the user:161"ngrok is installed but not logged in. Let's fix that:162fix Add security warnings: (1) 'Your ngrok auth token grants tunnel creation privileges. Treat it like a password—never share it or paste it in untrusted contexts.' (2) After setup, remind users: 'Rotate your ngrok token at dashboard.ngrok.com if you believe it was exposed.' (3) Recommend using ngrok's IP restrictions or other built-in security features.
- 05SSD-185%HIGH
SKILL.md.tmpl:148
detailhide
The repeated emphasis 'Do NOT summarize it, do NOT skip it, do NOT just say here\'s the output' pressures the user to blindly propagate output without review. Combined with the instruction to copy-paste into another agent's chat, this creates a social engineering risk where injected or malicious instructions could be executed by the remote agent without proper vetting.
146```147148**CRITICAL: You MUST output the full instruction block to the user.** The command149prints everything between ═══ lines. Copy the ENTIRE block verbatim into your150response so the user can copy-paste it into their other agent. Do NOT summarize it,fix Replace this section with: (1) 'Review the instruction block and verify that the setup key and server URL are correct before copying' (2) Add checksum or signature validation (3) Show users exactly what will be granted: 'This grants agent X read+write access to your browser' (4) Make it clear that they should understand each step before following it (5) Provide a manual alternative flow if they want to review parameters in detail.
- 06SSD-475%MEDIUM
SKILL.md.tmpl:142
detailhide
The skill uses a multi-step narrative that progressively normalizes granting powerful access (--admin flag) to remote agents. The framing 'Use sparingly. Only for agents you fully trust' suggests admin access is an acceptable default path, when in reality granting JavaScript execution and credential access to remote agents is extremely dangerous and should be strongly discouraged.
140```141142If the user also needs admin access (JS execution, cookies, storage):143144```bashfix Restructure the flow: (1) Remove --admin from the main pairing path (2) Add a strong warning section: 'WARNING: Admin Access is Dangerous' (3) Make users explicitly type 'I understand the risks' before enabling --admin (4) Recommend alternatives like running the remote agent in a sandboxed environment (5) Default to read-only mode unless user explicitly requests write access.
- 07SSD-380%MEDIUM
SKILL.md.tmpl:109
detailhide
The skill writes credentials directly to agent config directories (e.g., ~/.openclaw/skills/gstack/browse-remote.json) without explicit per-use consent or creating an audit trail. If the user's system is compromised, these credentials can be stolen. Additionally, users may not realize they've granted persistent browser access to another agent and cannot easily revoke it without knowing where credentials are stored.
107## Step 4: Execute pairing108109### If same machine (option A):110111Run pair-agent with --local flag:fix (1) Require explicit user confirmation before writing credentials: 'This will grant AGENT_NAME persistent browser access. Type the agent name to confirm.' (2) Log credential writes to a user-visible audit file (3) Provide clear documentation on where credentials are stored and how to revoke them (4) Add a revocation command that the user can easily invoke (5) Consider using time-limited credentials by default (6-hour expiration) rather than 24-hour tokens.