Skip to main content

Configuration

IaC Code reads configuration from CLI arguments, environment variables, and files in the runtime configuration directory.

Configuration precedence:

CLI arguments > environment variables > configuration files

The runtime directory defaults to:

~/.iac-code/

You can relocate it by setting the IAC_CODE_CONFIG_DIR environment variable (supports ~ and $VAR expansion). When set, every persisted artifact — credentials, settings, history, projects/, image-cache/, tool-results/, logs/, memory/, a2a/, telemetry/, skills/ — follows the new location.

Common files:

FileDescription
.credentials.ymlLLM credentials
.cloud-credentials.ymlCloud provider credentials
settings.ymlSelected provider, model, and related settings
history filesInput history for interactive workflows

Avoid committing or sharing files from this directory because they can contain secrets or local preferences.

Project Settings

In addition to the user-level ~/.iac-code/settings.yml, IaC Code loads project-level settings from the current working directory:

FileScope
.iac-code/settings.ymlShared project settings (safe to commit).
.iac-code/settings.local.ymlLocal overrides (should be git-ignored).

Merge order: user settings → project settings → project local settings → CLI arguments (later sources override earlier ones).

Tool Permission Configuration

The permissions section in settings.yml configures which tool actions are allowed, denied, or require confirmation:

permissions:
mode: default
allow:
- "bash(git *)"
- "bash(ls:*)"
deny:
- "bash(rm -rf *)"
ask:
- "bash(curl:*)"
additional_directories:
- "/tmp/workspace"
FieldDescription
modePermission mode: default, accept_edits, bypass_permissions, dont_ask.
allowList of tool permission patterns to auto-approve.
denyList of tool permission patterns to auto-deny.
askList of tool permission patterns that always require confirmation.
additional_directoriesExtra directories beyond cwd that the agent is allowed to write to.

Pattern Syntax

Tool permission patterns follow the format tool_name(rule):

PatternMeaning
bashMatch all bash commands (bare tool name).
bash(git *)Match bash commands starting with git.
bash(curl:*)Match bash commands starting with curl.
write_fileMatch all write_file tool calls.

Rules are evaluated in order: deny → ask → allow → default behavior. CLI arguments (--allowed-tools, --disallowed-tools) take the highest precedence.