Skip to main content
This documentation is for the federal deployments of Devin. Back to Devin Docs
devin airgap doctor is the first thing to run when the CLI or Desktop does not start, cannot reach a model, or shows an error code. It runs every local and network check the agent depends on, prints one line per check, and exits nonzero if anything fails. This page explains each check and what to do about it, then describes what to collect for a support request.

Run doctor

Run it as the user who will use Devin, in the same environment (the API-key variables must be set in that shell):
Each line is <status> <check> <detail>. Coded failures and warnings prefix the detail with the error code, for example FAIL model 'llama-3.3-70b': endpoint reachability NET003: .... For automation, --json prints {"ok": <bool>, "checks": [...]} where each check has check, status (pass, warn, fail), and detail, plus code on coded warnings and failures and latency_ms on a passing inference probe:
Desktop uses the same bundled CLI, so run doctor from a terminal on the Desktop host to diagnose Desktop problems too.

Check reference

Checks run in the order below. Later checks that depend on an earlier failure are skipped rather than repeated: if the models file cannot be found, there is no models file parse line and no endpoint probes.

license

Loads and verifies the license file (see License).

models file path

Resolves the models file location (/etc/devin/models.json, C:\ProgramData\Devin\models.json on Windows, or DEVIN_MODELS_FILE) and confirms a file exists there.

config dir writable and data dir writable

Creates the product config and data directories if needed and writes a probe file to each.

CA bundle

Reports whether DEVIN_CA_BUNDLE is set and loads it.

models file parse and model '<name>': API key env var

Parses the models file with the same validator as devin models validate, then checks that each model’s api_key.env variable is set in the current environment.

custom subagent profiles

Lists custom subagent definitions from agents/**/AGENT.md. none configured or <n> profile(s) loaded passes; CFG005 names a definition that could not be parsed. This check is shared with the standard devin doctor and is unrelated to the air-gapped configuration.

model '<name>': endpoint reachability

Sends GET {base_url}/models with the model’s API key, using a 10-second timeout and the same TLS configuration inference uses.

model '<name>': inference conformance

Skipped when reachability failed at the transport level. Sends a one-token request to prove the endpoint speaks the configured API: POST {base_url}/chat/completions with max_tokens: 1 for chat_completions, or POST {base_url}/responses with max_output_tokens: 16 for responses.

Common problems

What to send to support

Collect the following on the affected workstation. Review each file before sending it; none of them is uploaded automatically.
  1. The doctor output:
    The detail strings contain your endpoint URLs and hostnames but never API-key values.
  2. The redacted diagnostics report:
    The report records versions, whether each configuration file exists and parses, model names, whether each API-key variable is set, and audit-log statistics. It never contains prompts, code, file contents, secret values, endpoint URLs, or environment-variable values.
  3. The exact error message shown to the user, including its code, and the output of devin --version.
  4. For SSO problems, the relevant auth events from the audit log (error_code and action fields) and the matching entries from your IdP’s logs.
Do not send the license file, the API-key values, sso_tokens.toml, or sessions.db.