The "~20% of ClawHub skills malicious" claim had no traceable source and is contradicted by the empirical literature. Replace with the Jan 2026 large-scale study (98,380-skill snapshot: 157 confirmed malicious, ~71% credential harvesters, exfiltration overwhelmingly naive) and add the arXiv citation. The corrected figures still support the supply-chain threat point and are defensible under scrutiny. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YcU7nerbg8cVj9R4EkpfLJ
14 KiB
Local vs. Remote Agent Execution: Security & Privacy Tradeoffs
Research notes on when to run containerized Claude Code agents on a remote machine outside the local network versus inside it, focusing on security and privacy concerns. Relevant to a potential bot-bottle extension for remote agent execution.
The core mental model
The topology decision isn't "local = safe, remote = dangerous." The real variables are: what can the agent reach if compromised, what's on the host if the container escapes, and whether credentials are short-lived and scoped.
Threat landscape by topology
Local (current bot-bottle model)
- Container escape → developer laptop →
~/.ssh,~/.aws, browser cookies, Keychain, everything - Outbound: Docker containers have full internet access by default; no egress monitoring on most home networks
- Lateral movement: compromised container can reach the LAN — NAS, other machines, internal services
- Notable: CVE-2025-59536 (CVSS 8.7, Feb 2026) — a poisoned
.claude/settings.jsonin a repo gives RCE when Claude Code opens it.--dangerously-skip-permissionsremoves the last gate. - Supply chain: MCP servers, skills, and npm packages pulled during agent execution. A Jan 2026 large-scale empirical study of a 98,380-skill snapshot confirmed 157 malicious skills, ~71% of them credential harvesters. Exfiltration was overwhelmingly naive — plaintext HTTP to hardcoded endpoints; under 10% used any code obfuscation, and concealment was mostly at the documentation level, not the code level. (Malicious Agent Skills in the Wild, arXiv:2602.06547)
What local topology protects:
- No inbound attack surface — nothing listening on a public port
- Secrets stay physically on your hardware; no transit risk
- Network egress bounded by the host router
Remote machine
- New inbound attack surface (SSH/API port must be open; CISA notes exploitation of remote access vulns within 9–13 days of disclosure)
- Secrets must travel from local to remote — each transit is a new exposure class
- If the VM has a cloud IAM role attached → blast radius includes cloud APIs (S3, RDS, IAM, etc.)
- Compromised remote host can read env vars injected into containers, intercept docker exec sessions, exfiltrate skills and prompts
- Worst case: a remote VM connected back to the LAN via VPN is the worst of both worlds — internet-facing attack surface + full LAN access. This pattern should never be built.
- Multiple agents sharing the same remote host creates cross-tenant bleed risk.
What remote topology can offer:
- Better isolation from the developer laptop — a compromised container doesn't reach
~/.sshor local credentials unless explicitly forwarded - Ephemeral compute — a cloud VM torn down after each session leaves no persistent attack surface
- Cloud-native network controls (Security Groups, VPC firewall, PrivateLink) can be more granular than home router rules
- VPC flow logs + CloudTrail give an audit trail that a home network doesn't
Data sensitivity — when "on-prem" matters
Data that should not leave the local network absent extraordinary controls:
| Data type | Why |
|---|---|
| Private SSH keys | If copied to remote, stored outside your control; lateral movement via key reuse |
| Secrets forwarded into containers (API tokens, OAuth tokens) | In-transit exposure; remote machine persistence risk |
| Source code under NDA or with unreleased IP | Contractual and competitive risk |
| PHI (HIPAA) | Requires BAA with every system that touches it; standard cloud VMs don't qualify |
| PII of EU residents (GDPR) | Cannot legally transit US infrastructure without SCCs |
| Internal API credentials for LAN systems | Sending to a remote agent that can reach back via VPN creates a remote-controlled pivot |
Data that can go remote with proper controls:
- Public open-source code
- Non-sensitive project scaffolding
- Prompts that don't contain embedded secrets
- Derived outputs (build artifacts, test results) that don't contain source data
Blast radius comparison
Worst case: local container compromise
- Container escape via kernel exploit → developer laptop
- From laptop:
~/.ssh/id_rsa,~/.aws/credentials, browser session cookies, macOS Keychain,~/.claude - Lateral movement to LAN — internal services, NAS, other dev machines
- Outbound: anything the home/office network allows
Worst case: remote container compromise
- Container escape → remote host
- From remote host: host environment credentials, any attached IAM role, secrets in the host filesystem
- If a VPN or SSH tunnel links remote machine to local network → full lateral movement back through that tunnel
- Cloud API access if the VM has IAM permissions → S3, RDS, EC2, Secrets Manager, etc.
Remote blast radius is potentially larger than local if:
- The remote VM has cloud IAM permissions broader than the local laptop environment
- The remote machine is connected back to the local network via VPN (creating a pivot)
- Multiple agents share the same remote host
Remote blast radius is smaller if:
- The remote VM is strictly isolated (no VPN back to LAN)
- IAM role is locked to minimum necessary permissions
- Remote host is ephemeral and torn down after each session
Key insight: once a container is compromised via prompt injection, the blast radius is dominated by what the agent can reach, not by where it physically runs. Studies have measured an 82.4% inter-agent compromise rate in multi-agent systems.
Credentials and secrets
Local topology (current bot-bottle)
- Secrets live in the host environment or are prompted from
/dev/tty - Forwarded to containers via
-e NAME(not=value), never on argv, never in env-files for secrets - On container teardown, secrets are gone from that process space
- Risk: container escape to host reaches the host env where the parent process ran
Remote topology
Secrets must travel from their source to the remote machine. Mechanisms in increasing security order:
- SSH env forwarding (
AcceptEnv/SendEnv) — secrets in plaintext in the SSH session; logged by some SSH daemon configurations - Encrypted orchestration channel — secrets encrypted in transit, but remote machine must decrypt and expose them in memory
- Vault/cloud secrets manager + dynamic credentials — remote machine fetches its own short-lived secrets; local machine never sends secrets at all (best option)
An 8,640x reduction in abuse window comes from switching from 90-day keys to 15-minute tokens. Static long-lived tokens (CLAUDE_CODE_OAUTH_TOKEN, GITLAB_TOKEN) are the biggest risk in a remote topology.
Proxy-inject pattern: agent makes unauthenticated requests; a proxy outside the container injects credentials per-request. The container never sees the raw token. Anthropic's secure deployment docs recommend this pattern.
Egress and exfiltration risk
Local topology
- Monitoring: whatever the home/office router supports — usually minimal
- Containment:
--network none+ a proxy socket provides the strongest containment; bot-bottle does not currently do this - DLP: essentially none unless specifically deployed on the LAN
- Domain fronting risk: even allowlisted-domain proxies can be bypassed via domain fronting — an agent that can reach
api.anthropic.comcould relay data to an attacker-controlled backend through that domain - bot-bottle today: containers have full outbound internet access. No egress restrictions.
Remote topology (cloud VM)
- VPC flow logs capture every connection attempt by IP/port — better than most home networks if configured
- Security Groups can allowlist specific endpoints; a NAT gateway can be locked down
- DLP tooling is more mature in cloud environments (AWS Macie, GCP DLP API, Cloudflare AI Gateway)
- But only if configured. A raw cloud VM with default settings has worse egress monitoring than a corporate network.
Strongest exfiltration controls for either topology:
--network nonein Docker + a unix socket proxy that enforces domain allowlists- TLS inspection at the proxy to defeat domain fronting
- Audit log all outbound traffic at the proxy
Compliance
HIPAA
- PHI must stay within HIPAA-covered infrastructure. Standard commercial cloud VMs require a signed BAA with the provider. AWS Bedrock, Azure OpenAI, and Google Cloud can be configured with BAA coverage; a generic EC2 cannot.
- If the agent processes any PHI, the remote machine must be in a HIPAA-qualified environment.
- "Minimum necessary" rule: an agent with broad filesystem access to a repo containing PHI violates this unless carefully scoped.
GDPR
- EU personal data cannot legally be sent to US infrastructure without Standard Contractual Clauses or adequacy decisions.
- Local execution (if the developer is EU-based) sidesteps this. Remote execution on a US cloud VM requires SCCs.
SOC2
- No specific data residency mandate, but all infrastructure that touches in-scope data must implement the trust criteria. A remote VM needs audit logs, access controls, and continuous monitoring — more operational overhead than local execution.
Decision heuristics
| Scenario | Recommendation |
|---|---|
| Solo developer, personal projects, no regulated data | Local is fine; add egress proxy for defense-in-depth |
| Regulated data (HIPAA, GDPR, SOC2) | Local unless the remote environment is fully qualified |
| Long-running automated tasks, no secrets in content | Remote VM acceptable with egress controls and ephemeral lifecycle |
| Parallel agent fleet | Remote VM cluster with per-agent IAM roles, strict egress, centralized secret management |
| Agent receives credentials that give network access to LAN | Keep local; never build a VPN-connected remote agent that can pivot back to the LAN |
Source code with embedded secrets (.env, API keys in config) |
Local only, or sanitize before sending to remote |
| Lack infrastructure maturity for proper remote config | Local — a poorly configured VM is strictly worse than a well-configured local container |
Concrete recommendations if extending bot-bottle for remote
-
Never build the VPN-pivot pattern. A remote agent connected back to the LAN via VPN is the worst of both worlds. If a remote agent needs LAN resources, expose those through a narrow API, not a VPN.
-
Add
--network none+ a proxy socket, even locally first. The single highest-leverage change available right now. Bounds egress to allowlisted domains, prevents arbitrary exfiltration regardless of topology. Anthropic's secure deployment docs show exactly how to do this. -
Use dynamic, short-lived credentials for the remote context. Replace static tokens with per-task dynamically issued credentials (Vault with approle auth, or cloud workload identity federation). This eliminates the "credential concentration on remote host" problem.
-
Proxy-inject credentials; don't send them to the container. The proxy runs on the remote host (not in the container); the credential lives only in the proxy process.
-
Scope IAM/cloud permissions to the minimum. No
*:*policies. No admin roles on the VM. -
Make the remote VM ephemeral. Spin it up for the session, tear it down when done. No persistent credentials or data between sessions.
-
Enable VPC flow logs and forward them somewhere. Going remote buys you egress monitoring you don't have locally — but only if configured.
-
Validate hooks before execution.
init-work/init-free-agentcopies a project into the container. That project may contain poisoned.claude/settings.jsonhooks (CVE-2025-59536 vector).--dangerously-skip-permissionsremoves the last gate; consider validating hooks before execution.
Bottom line
For the current bot-bottle use case (developer feature implementation, no regulated data,
single developer), local execution is the right default. The biggest unaddressed risk
right now isn't topology — it's that containers have unrestricted outbound internet access.
Adding --network none + a proxy socket would be higher-leverage than any topology change.
Remote execution becomes worth the complexity for parallelism at scale, long-running unattended tasks, or strict separation of agent compute from developer hardware — but only with egress controls, ephemeral lifecycle, and dynamic credential management in place.
Sources
- Penligent AI — AI Agents Hacking in 2026: Defending the New Execution Boundary
- Repello AI — The Agentic AI security threat landscape in 2026
- arxiv 2601.17548 — Prompt Injection Attacks on Agentic Coding Assistants
- Unit42 (Palo Alto) — Navigating Security Tradeoffs of AI Agents
- Trend Micro — Unveiling AI Agent Vulnerabilities Part III: Data Exfiltration
- Help Net Security — 29 million leaked secrets in 2025: AI agents credentials are out of control
- GitGuardian — Short-Lived Credentials in Agentic Systems: A Practical Trade-off Guide
- Aembit — Securing AI Agents Without Static Credentials
- Anthropic Docs — Securely Deploying AI Agents
- Anthropic Engineering — Claude Code Sandboxing
- TrueFoundry — Claude Code Sandboxing: Network Isolation, File System Controls
- TrueFoundry — LLM Deployment in Regulated Industries: HIPAA, SOC2 & GDPR Playbook
- MindStudio — AI Agent Compliance: GDPR SOC 2 and Beyond
- OX Security — The Mother of All AI Supply Chains: Critical MCP Vulnerability
- The Hacker News — Anthropic MCP Design Vulnerability Enables RCE
- Straiker — Agent Hijacking: How Prompt Injection Leads to Full AI System Compromise
- Seraphic Security — Secure Remote Access Best Practices 2025