This documentation is for the federal deployments of Devin. Back to Devin Docs
TLS requirements
- Every model
base_urland the SSOissuermust behttps://. Plainhttp://is accepted only for loopback hosts (localhost,127.0.0.0/8,[::1]). - Certificates are verified with the operating system’s trust store (Security.framework on macOS, the system CA store on Linux). If your endpoints are signed by a CA that is already installed on the workstation, no further configuration is needed.
- If your endpoints are signed by a private CA that is not in the OS trust store, add it with
DEVIN_CA_BUNDLEas described below. The CLI never disables certificate verification.
Trust a private CA with DEVIN_CA_BUNDLE
DEVIN_CA_BUNDLE names a PEM file whose certificates are trusted in addition to the OS trust store. It applies to inference requests, to devin airgap doctor probes, and to every request the CLI makes to your IdP during SSO login and revalidation.
1
Assemble the bundle
Put the root (and, if you use one, intermediate) certificates of your private CA into a single PEM file. The file may contain several Your endpoints do not need to share a certificate or a CA. There is one bundle for the whole agent process and it applies to every connection, so if different endpoints are signed by different private CAs, concatenate all of those CAs into the same file:With that bundle,
-----BEGIN CERTIFICATE----- blocks.https://vllm.corp.example (signed by corp-root-ca), https://models.ml.example (signed by ml-platform-ca) and your IdP (signed by idp-root-ca) are all trusted. Endpoints signed by a CA that is already in the OS trust store need no entry. The models file has no per-model certificate or TLS fields, and a separate bundle per endpoint is not supported.2
Export the variable in the agent's environment
devin.acp.agentEnv setting, or on macOS use launchctl setenv DEVIN_CA_BUNDLE /etc/devin/ca-bundle.pem (open does not pass your shell’s environment to the app).3
Confirm with doctor
trusted only via DEVIN_CA_BUNDLE confirms the bundle is what makes the endpoint trusted: doctor retries each reachable endpoint with the OS trust store alone and reports whether that attempt fails on TLS. Without the variable set, the CA bundle row reads not configured (OS trust store only; set DEVIN_CA_BUNDLE to add a private CA).CFG004 and the message from the parser (for example failed to read CA bundle '/etc/devin/ca-bundle.pem': No such file or directory). At runtime the same condition is not fatal: the CLI prints a warning: ignoring DEVIN_CA_BUNDLE: … line and falls back to the OS trust store, so a typo in the path shows up as NET003 TLS failures against your endpoints rather than as a startup error. Fix the bundle and re-run doctor.
Proxy
The air-gapped CLI uses the same outbound proxy handling as the standard Devin CLI. By default ("mode": "system") it honors the HTTP_PROXY, HTTPS_PROXY, ALL_PROXY, and NO_PROXY environment variables and the operating system’s PAC/auto-proxy settings. To force a specific proxy or to bypass proxies entirely, add a proxy block to the user config file (config.json in the shared Devin config directory; see On-disk formats):
no_proxy applies in every mode and uses the same syntax as the NO_PROXY environment variable. To set the proxy for all users on a host, place the same proxy block in the machine-wide policy file system.json (/etc/devin/system.json on Linux, /Library/Application Support/Devin/system.json on macOS, C:\ProgramData\Devin\system.json on Windows); if both files define proxy, the CLI refuses to start until you remove the user copy. The full option reference is in the CLI config file reference.
A proxy that terminates TLS and re-signs traffic with its own CA counts as a private CA: add its certificate to DEVIN_CA_BUNDLE. Connections still go only to the destinations listed at the top of this page; the proxy changes the path, not the set of destinations.
Timeouts
A probe that exceeds its timeout is reported as
NET005.
NET codes
devin airgap doctor attaches one of these codes to every failed endpoint probe. They are also the codes you will see in support requests. The full catalog is on the Error codes page.

