You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Harden agent IPC, reduce audit sensitivity, expand test docs
- Tighten UI→Agent IPC from loopback TCP to Unix domain socket
(/run/secure-ai/agent.sock), eliminating TCP attack surface
- Change log_file_paths default to false to reduce audit sensitivity
- Document dev-mode auth bypass as non-production (SECAI_DEV_MODE=1
required; never set on appliance image)
- Expand test-matrix.md with per-class agent test breakdown (11 classes,
93 tests with exact counts and categories)
- Update security-status.md M31 entry to reflect current truth
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@@ -125,8 +125,9 @@ The agent systemd service uses the same defense-in-depth as other services, with
125
125
126
126
The agent communicates with other services (registry, tool firewall, airlock, inference) over loopback HTTP. Authentication and access control:
127
127
128
-
-**Loopback-only binding**: All services bind to `127.0.0.1`, never `0.0.0.0`. Only processes on the local machine can reach service endpoints.
129
-
-**Service tokens**: The agent reads a shared service token from `/run/secure-ai/service-token` (mounted read-only). This Bearer token authenticates requests to peer services with mutating endpoints. If the token file is absent (dev mode), auth is bypassed.
128
+
-**Unix socket IPC (UI→Agent)**: The UI communicates with the agent over a Unix domain socket at `/run/secure-ai/agent.sock`, eliminating TCP attack surface for this channel. The agent still uses loopback TCP for outbound calls to Go services (registry, tool firewall, airlock) which do not support Unix sockets.
129
+
-**Loopback-only binding**: Go services bind to `127.0.0.1`, never `0.0.0.0`. Only processes on the local machine can reach their endpoints.
130
+
-**Service tokens**: The agent reads a shared service token from `/run/secure-ai/service-token` (mounted read-only). This Bearer token authenticates requests to peer services with mutating endpoints. **Production (appliance):** The token file MUST exist; if absent, the agent refuses to start. **Development only:** When `SECAI_DEV_MODE=1` is set explicitly, auth is bypassed to allow local testing without the full service stack. Dev-mode bypass is never enabled on the appliance image — the systemd unit does not set this variable, and the token file is provisioned at boot by `secure-ai-init.service`.
130
131
-**UI→Agent auth**: The UI proxies agent requests through `/api/agent/*` endpoints. These are protected by session-based authentication (scrypt passphrase) and are not in the public endpoint list. All state-changing endpoints (approve, deny, cancel) require an authenticated session.
131
132
-**CSRF protection**: The UI applies CSRF token validation on all POST requests, including agent proxy endpoints. Direct agent-to-agent calls are backend-only (no browser origin).
132
133
-**Fail-closed**: If any peer service is unreachable, the agent returns an error rather than bypassing the service (e.g., tool firewall unreachable → tool invocation fails, airlock unreachable → outbound request fails).
| `log_file_paths` | boolean | `true` | Log which files were accessed (not their content) |
399
+
| `log_file_paths` | boolean | `false` | Log which files were accessed (not their content) — off by default to reduce audit sensitivity; enable explicitly if needed |
0 commit comments