Arc0

Security & Privacy

Learn how Arc0 protects your code and data with end-to-end encryption, local-only architecture, and secure WebSocket tunnels. Your codebase never leaves your machine.

Your code stays on your machine—Arc0 only streams agent conversations and diffs, never your full codebase.

Architecture Overview

┌─────────────────────────────────────────────────────────┐
│                  Your Machine (Private)                  │
│                                                         │
│  ┌──────────┐    ┌──────────────┐    ┌──────────────┐ │
│  │ Codebase │    │   Arc0 CLI   │    │ Coding Agent │ │
│  │          │    │              │    │              │ │
│  │ (stays   │───▶│  (filters &  │◀──▶│ (runs here)  │ │
│  │  here)   │    │   streams)   │    │              │ │
│  └──────────┘    └──────┬───────┘    └──────────────┘ │
│                         │                              │
└─────────────────────────┼──────────────────────────────┘

                   WSS Tunnel (encrypted)
                    (diffs, prompts,
                     NOT full code)


                  ┌──────────────┐
                  │ Your Phone   │
                  │ (Arc0 App)   │
                  └──────────────┘

What Gets Sent

Arc0 CLI only streams to your phone:

SentNot Sent
Agent questionsYour full codebase
Code diffsUnchanged files
Error messagesEnvironment variables
Status updatesAPI keys/secrets
Session metadataGit history

Example

If your agent modifies src/auth.ts, Arc0 sends:

  • The diff (changes only)
  • The filename
  • The agent's question about the change

Arc0 does NOT send:

  • The full file contents
  • Other files in your project
  • Your .env file
  • Git credentials

Data in Transit

All data between Arc0 CLI and the mobile app is encrypted:

  • WSS (WebSocket Secure) for all connections
  • End-to-end encryption for message content
  • Perfect forward secrecy for session keys

Tunnel Connection

Arc0 uses a secure tunnel for connectivity:

  • Traffic is encrypted end-to-end via WSS
  • Works behind NAT, firewalls, corporate networks
  • Low latency for real-time communication
  • Relay servers only see encrypted blobs—we cannot read your data

Data at Rest

On Your Machine

Arc0 CLI stores minimal data locally:

  • Configuration file (~/.arc0/config.yaml)
  • Session logs (configurable retention)
  • Pairing credentials (encrypted)
~/.arc0/config.yaml
# Configure data retention
storage:
  session_retention: 7d # Delete after 7 days
  log_retention: 30d
  encrypt_logs: true

On Your Phone

The Arc0 app stores:

  • Pairing credentials (encrypted, in device keychain)
  • Session cache (configurable)
  • App preferences

Data is encrypted using device encryption (iOS Keychain, Android Keystore).

Clearing Data

Clear all local data:

# On your machine
arc0 clear-data

# On your phone
Settings Arc0 Clear Data

Authentication

Device Pairing

Devices are paired using QR codes that contain:

  • A one-time pairing token
  • CLI's public key
  • Connection information

The QR code is valid for 5 minutes and single-use.

Session Authentication

After pairing:

  • Devices authenticate using stored credentials
  • Sessions are validated with signed tokens
  • Invalid sessions are rejected

Revoking Access

Unpair a device:

# List paired devices
arc0 devices

# Remove a device
arc0 unpair <device-id>

Or from the app: SettingsDevicesRemove

Open Source

Arc0 CLI is fully open source:

You can:

  • Audit the code yourself
  • Build from source
  • Self-host entirely
  • Contribute security improvements

Found a security issue? Please report it responsibly via security@arc0.ai.

No Server Dependency

Arc0 works without our servers:

  • CLI runs locally on your machine
  • Mobile app connects directly via tunnel
  • No account required
  • No telemetry by default

Optional Telemetry

If enabled, we collect:

  • App version
  • Error reports (opt-in)
  • Feature usage (anonymized)

Never:

  • Your code
  • Your prompts
  • Your responses

Disable telemetry:

~/.arc0/config.yaml
telemetry:
  enabled: false

Best Practices

Development Machine

  • Keep Arc0 CLI updated for security patches
  • Use strong device passwords
  • Enable disk encryption
  • Review paired devices regularly

Mobile App

  • Enable device lock (PIN, biometric)
  • Use app lock feature (Settings → Security)
  • Don't share QR codes
  • Unpair lost devices immediately

Network

  • Use trusted networks when possible
  • Enable TLS for remote connections
  • Consider VPN for sensitive work
  • Firewall the CLI port when not in use

Compliance

Arc0's architecture supports compliance requirements:

RequirementHow Arc0 Helps
Data residencyAll data stays on your infrastructure
Access controlYou control device pairing
Audit loggingSession logs available
Right to erasureClear data commands

Arc0 is a tool—compliance ultimately depends on how you configure and use it. Consult your compliance team for specific requirements.

Threat Model

What Arc0 Protects Against

  • Network eavesdropping (encryption)
  • Unauthorized device access (pairing)
  • Data leakage (minimal data streaming)
  • Session hijacking (signed tokens)

What Arc0 Doesn't Protect Against

  • Compromised development machine
  • Physical access to your devices
  • Malicious CLI modifications (verify source)
  • Agent vulnerabilities (separate concern)

Next Steps

On this page