Network trust configuration¶
network adds certificate authorities to Colossus-owned outbound TLS clients. It does
not authorize a destination, supply a credential, or disable hostname verification.
Keep these controls separate:
| Control | Question it answers | Configuration |
|---|---|---|
| TLS trust | Which certificate authorities may authenticate the server? | network.caBundlePath or an adapter-specific CA field |
| Destination authorization | May this effect contact the origin? | sandbox.networkDestinations |
| Authentication | How does Colossus authenticate to the service? | Provider, MCP, integration, audit, policy, or storage credential fields |
| Local API identity | Is this the enrolled Colossus daemon? | Separately provisioned certificate pin; unaffected by this bundle |
An endpoint normally needs both TLS trust and destination authorization. Under acknowledged full access, the runtime supplies ambient HTTP(S) destination authority; HTTPS trust and endpoint-specific credential validation remain separate. Ambient authority also accepts canonical non-loopback plaintext HTTP, where a CA bundle has no effect and there is no TLS confidentiality or server authentication. Adding a CA bundle alone never permits network access under an isolating boundary.
Security-channel adapters can impose stricter transport rules regardless of ambient authority. Remote OPA remains HTTPS with pinned CA trust and mTLS identity, and WORM audit export remains HTTPS-only, create-only, and hash-bound.
Choose a starting point¶
| Scenario | caBundlePath |
Result |
|---|---|---|
| Every endpoint uses a public CA | Omit network or set the field to null |
Use built-in public roots only |
| One or more endpoints use an enterprise/private CA | Set one PEM bundle path | Add those roots to built-in public roots for shared clients |
| Remote OPA needs pinned trust | Use policy.ca_pem_path, or the shared bundle when it contains only the intended OPA trust roots |
OPA uses an exclusive pinned trust policy |
| PostgreSQL has its own exclusive CA | Use storage.postgres.tls.kind: custom_ca |
PostgreSQL ignores the shared runtime bundle |
| A sandboxed or stdio MCP child needs a private CA | Configure that program's own trust store | Child processes do not inherit the in-process bundle |
Use no additional bundle unless an endpoint actually requires one. Every added root expands the set of certificates that Colossus-owned clients can trust.
Field reference¶
network.caBundlePath¶
The only network field is an optional path to a PEM certificate bundle:
| Property | Rule |
|---|---|
| Value | Workspace-relative path, absolute path, or null |
| Format | One or more PEM-encoded certificates intended as trust anchors |
| Maximum file size | 4 MiB |
| Maximum certificates | 256 |
| Load time | Once, during runtime startup |
| Public roots | Retained and augmented for ordinary shared clients |
Relative paths resolve from the canonical selected workspace. Keeping a reviewed bundle
under .colossus/certs/ makes the configuration portable with the workspace while the
development sandbox continues to protect .colossus from shell access.
Use null or omit the entire block to rely only on built-in roots:
The bundle should contain certificate blocks only. Never include private keys, client
identities, bearer credentials, or endpoint URLs. Colossus does not read ambient
SSL_CERT_FILE, proxy, or similar environment settings as a substitute for this field.
Startup validation¶
Colossus opens, bounds, parses, and validates the complete bundle before constructing the runtime. Startup fails closed when the file is:
- Missing or unreadable.
- Empty or contains no PEM certificates.
- Malformed or contains certificate encodings the TLS stores cannot accept.
- Larger than 4 MiB.
- Larger than 256 certificates.
The configured path must be nonempty. The source path and PEM bytes are not included in normal diagnostics. Safe native interfaces may expose only certificate count and SHA-256 fingerprints.
The file is not watched. Replacing its contents does not change an already running runtime; restart Colossus or Managed Local to load the new trust anchors.
Clients that use the shared bundle¶
For ordinary Colossus-owned clients, the configured certificates augment the built-in public roots:
| Client family | Examples |
|---|---|
| Model providers | Codex subscription, OpenAI Responses, and OpenAI-compatible provider profiles |
| Search | SearXNG and SerpAPI profiles |
| Integrations | Native and imported HTTP integrations |
| Brokered HTTP | network.http and WORM audit export |
| Remote MCP | Streamable HTTP requests and OAuth metadata/token calls |
| Packs | Remote pack registry operations |
| Semantic memory | Chroma and OpenAI-compatible embedding endpoints |
| PostgreSQL | webpki_roots TLS policy |
| OPA | Shared pinned trust when remote OPA omits ca_pem_path |
Destination matching, DNS pinning, redirect rejection, bounded bodies, timeouts, permit checks, quarantine, and audit remain active. Trusting a CA does not weaken those controls.
Adapter-specific precedence¶
Some adapters deliberately use a stricter trust policy instead of augmenting public roots.
Remote OPA¶
Remote OPA requires pinned CA trust and an mTLS identity:
- When
policy.ca_pem_pathis set, that adapter-specific bundle is exclusive. Public roots andnetwork.caBundlePathare not used for OPA. - When
policy.ca_pem_pathis omitted, a nonemptynetwork.caBundlePathsupplies the exclusive pinned roots for remote OPA. - The client identity remains in
policy.identity_pem_path; a CA bundle never supplies the client certificate or private key.
See Policy and audit configuration for the complete OPA shape.
PostgreSQL¶
PostgreSQL trust follows storage.postgres.tls.kind:
| TLS kind | Shared bundle behavior |
|---|---|
webpki_roots |
Built-in WebPKI roots plus network.caBundlePath |
custom_ca |
Adapter-specific CA only; shared and public roots are excluded |
disabled |
No TLS; accepted only for loopback or Unix-socket targets |
See Storage configuration for the PostgreSQL fields.
Local Colossus public API¶
External application clients verify the local or fleet Colossus endpoint using its
separately enrolled certificate fingerprint. network.caBundlePath cannot replace or
widen that identity pin.
What does not inherit the bundle¶
Programs started inside a process sandbox own their TLS implementation and trust store. The shared bundle is not injected into:
- Native, Windows Job Object, or OCI workload processes.
- Stdio MCP server processes.
- Arbitrary subprocess environment variables or certificate files.
If one of those programs needs enterprise TLS, build the trust anchor into its controlled runtime or pass a separately authorized certificate path using that program's documented configuration. Granting the endpoint origin still remains necessary for networked sandbox execution.
Remote Streamable HTTP MCP is different: Colossus owns that HTTP client, so it does use the shared bundle.
Practical examples¶
The following examples include exact destination grants for an isolating execution boundary. Acknowledged full access needs no duplicate grants, and retaining these lists does not constrain ambient HTTP(S) authority.
Private model provider¶
The provider URL includes its API prefix. The sandbox receives only the canonical origin, and the shared network block supplies the private CA:
network:
caBundlePath: .colossus/certs/company-ca-bundle.pem
providers:
profiles:
internal-models:
kind: open_ai_compatible
baseUrl: https://models.internal.example/v1
credentialReference: env:INTERNAL_MODEL_TOKEN
sandbox:
networkDestinations:
- https://models.internal.example
The provider credential remains independent of certificate trust and destination authorization.
Public and private providers together¶
Additional roots do not remove public roots for ordinary provider clients:
network:
caBundlePath: /etc/colossus/company-ca-bundle.pem
providers:
profiles:
public-provider:
kind: open_ai_responses
baseUrl: https://api.openai.com/v1
credentialReference: env:PUBLIC_PROVIDER_TOKEN
internal-provider:
kind: open_ai_compatible
baseUrl: https://models.internal.example/v1
credentialReference: env:INTERNAL_PROVIDER_TOKEN
sandbox:
networkDestinations:
- https://api.openai.com
- https://models.internal.example
The public endpoint continues to validate against built-in roots; the internal endpoint may validate against the added enterprise roots.
Remote MCP behind an enterprise CA¶
network:
caBundlePath: .colossus/certs/company-ca-bundle.pem
mcp:
oauthCredentialStore: auto
servers:
splunk:
transport: streamable_http
url: https://splunk.internal.example/services/mcp
credentialHeaders:
Authorization:
scheme: Bearer
reference: env:SPLUNK_MCP_TOKEN
allowStateless: true
allowedTools: [splunk_run_search]
sandbox:
environment:
- SPLUNK_MCP_TOKEN
networkDestinations:
- https://splunk.internal.example
The remote MCP adapter uses the shared CA bundle. A stdio MCP child would not.
Common configuration mistakes¶
| Symptom | Check |
|---|---|
| The endpoint is still denied under isolation | Add its exact origin to sandbox.networkDestinations; CA trust is not authorization |
| Certificate validation still fails | Confirm the bundle contains the issuing trust anchor and restart the runtime |
| A path works from one workspace only | Relative paths resolve from the selected workspace; use the intended workspace or an absolute managed path |
| Remote OPA fails after adding a general enterprise bundle | OPA treats shared roots as an exclusive pin; use the intended OPA roots or set policy.ca_pem_path |
| PostgreSQL ignores the shared roots | custom_ca is exclusive; choose webpki_roots to augment public roots with the shared bundle |
| A sandbox command still rejects enterprise TLS | Child processes own their TLS stacks and do not inherit this field |
| A changed bundle has no effect | Restart the runtime; the bundle is loaded once at startup |
Validate the result¶
First confirm the parsed path without resolving credentials:
Then construct the runtime, which reads and validates the bundle:
Finally, use the doctor command for the client you are configuring:
colossus --config .colossus/config.yaml provider doctor PROVIDER_PROFILE
colossus --config .colossus/config.yaml policy doctor
colossus --config .colossus/config.yaml state doctor
Run only the relevant doctor commands. A valid bundle cannot make an unapproved origin, invalid credential, incorrect model ID, unhealthy OPA service, or unavailable database succeed; those are separate checks.
Return to the configuration overview.