Security and execution boundaries

Holon runs agents that can execute shell commands, delegate work, and wait for external events. Understanding what boundaries Holon provides — and what it does not — helps you run agents safely.

The host-local runtime

Holon runs as a user-level process on your machine. It is not a sandbox:

What this means: scope workspaces intentionally, use dedicated user accounts or containers when running untrusted agent workloads, and treat agent command execution with the same care you'd give a shell script running as your user.

Execution environment summary

Every agent receives an execution environment summary in context. This summary describes the current policy snapshot and what is enforced:

BoundaryLevelWhat it means
cwd_rootingruntime_shapedThe runtime allows workdir outside the workspace root when explicitly requested; sandboxing is the responsibility of the execution backend
projection_rootinghard_enforcedFilesystem views are constrained to the projected root
path_confinementnot_enforcedThe runtime does not prevent access outside the workspace by path
write_confinementnot_enforcedWrite operations are not restricted to the workspace
network_confinementnot_enforcedNetwork access is unrestricted by default
secret_isolationnot_enforcedThe runtime does not isolate secrets from agent commands

Key takeaway: boundaries marked hard_enforced are runtime guarantees. Boundaries marked not_enforced rely on the operator's host configuration (filesystem permissions, firewall rules, container isolation).

Workspace binding

Holon provides workspace binding that constrains where the agent operates:

These bindings are organizational guardrails, not security boundaries: an agent that can execute arbitrary shell commands can cd /etc or read files outside the workspace if your OS permissions allow it. For true confinement, pair Holon with a container, VM, or dedicated user account.

Remote access (holon serve)

holon serve exposes the Holon control plane over HTTP. This is a powerful surface and must be protected:

# Secure: local-only access on Unix socket (default daemon mode) — no
# additional protection needed beyond filesystem permissions
holon daemon start

# Caution: LAN-accessible — always require a token
holon serve --access lan --token "your-secret-token"
holon serve --access lan --token-file ~/.holon/remote.token

# Caution: tunnel access — the tunnel provider can route traffic to
# your Holon instance
holon serve --access tunnel --token "your-secret-token"

Rules for remote access:

Capability-secret URLs

Holon generates callback URLs for external triggers and wake events. These URLs contain capability secrets:

http://host:7878/callbacks/wake/cb_<secret>

Anyone who knows this URL can wake the agent. Treat these URLs as secrets:

Trust and provenance

Holon classifies every input by its origin and trust level:

Trust levelExample sourcesWhat it means
trusted-operatorCLI, TUI, authenticated HTTPYou initiated this input
trusted-systemInternal runtime events, scheduled timersThe runtime generated this
trusted-integrationAuthenticated webhook from a known serviceA trusted external system sent this
untrusted-externalPublic webhooks, user-submitted contentThe source is unknown or unverified

Trust metadata is a policy signal, not a security guarantee. The agent sees the trust level and can adjust its behavior (e.g., refusing destructive commands on untrusted input), but trust labels do not replace sandboxing. External content marked untrusted-external still runs with your user's privileges unless you add OS-level confinement.

Practical recommendations

  1. Use dedicated workspaces — give agents a specific project directory rather than your home directory.
  2. Protect remote access — always use tokens, prefer local Unix sockets.
  3. Guard capability URLs — treat wake/callback URLs as credentials.
  4. Don't rely on trust labels alone — they inform agent behavior, not OS security.
  5. Add OS-level isolation for high-risk work — containers, VMs, or dedicated user accounts.

See also