Facade Code Docs
Reference

Configuration reference

Look up the fields in facade.json, their defaults, and how Facade applies them.

Top-level fields

Open the file through Agent settings. It accepts JSON comments and trailing commas. An empty object uses the defaults.

FieldValueDefault
yoloBoolean controlling CLI approvals and agent access.true
namesList of nonblank suggested agent names.Built-in name list
clisObject containing built-in overrides and additional named entries.{}; built-in CLIs remain available
$schemaString for editor schema metadata.Omitted

CLI entry fields

FieldValueDefault
typeclaude, codex, agy, muse, opencode, pi, or custom.Implicit for exact built-in IDs; required for added entries.
commandOne executable name or path.Type’s command on PATH; required for custom.
argsArray of literal argument strings.[]
envVariable names mapped to strings or null.{}
modelNonblank model ID.CLI decides. Not accepted for OpenCode or custom.
effortNonblank effort supported by the CLI and model.CLI decides. Not accepted for OpenCode or custom.
enabledBoolean controlling future starts and restoration.true
iconBuilt-in CLI ID or supported robot icon.Type’s icon; facade-pearl for custom.

Use the exact lowercase ID to configure a built-in entry, such as codex. A new entry must have a name distinct from every built-in ID and display name, even when capitalization is ignored. For example, use Codex · work rather than Codex. Added entries do not inherit settings from the built-in of their type.

enabled: false hides a valid entry and refuses future starts or restoration. It does not stop an agent already running.

Environment values

facade.json
{
  "clis": {
    "codex": {
      "env": {
        "WORK_API_KEY": "${env:WORK_API_KEY}",
        "OLD_TOKEN": null
      }
    }
  }
}
  • A string sets a variable. null removes it. An omitted variable is inherited.
  • ${env:NAME} reads the editor host’s environment. It does not read another key in the same object.
  • A missing reference makes that entry unavailable. References expand once in env values, not in args.
  • A literal value stays in facade.json. An environment reference keeps that value out of the file, but the CLI still receives the expanded value.

Setting a variable in an integrated terminal that is already open does not update the editor host’s environment. Make it available before starting the editor.

Precedence and launch options

Facade first uses any model and effort specified for the new agent, then the entry’s defaults. If neither provides a value, the CLI decides. OpenCode keeps both choices in its own configuration.

For built-in types, use the dedicated fields for model and effort. Facade also sets permissions, conversation IDs, working folders, and its own tools. It rejects arguments that conflict with these choices or prevent an interactive session from starting.

Facade looks for facade.json in the Facade home: the Facade: Home VS Code setting if set, then FACADE_HOME, then ~/.facade. Open Settings from the project to find its active file.

File errors and entry errors

A file-level error, such as invalid JSON, a duplicate key, or an unknown top-level field, blocks new starts and restoration. An error inside one CLI entry makes only that entry unavailable. Running agents keep running.

Follow the error’s setting path and correct that value. Facade does not silently substitute old settings. See Troubleshooting for common startup and provider errors.

View as Markdown ↗Docs

Search the docs

Search this guide. Use ↑ ↓ to move, Enter to open, Esc to close.