Configuration is layered so projects can keep policy close to code, while users can still override locally.
ICA loads ica.config.json in this priority order:
- AgentTask overrides:
workflow:*/config:*fields inside the AgentTask YAML - Project config (preferred):
./.ica/config.json - Project config (compat):
./ica.config.jsonor./.<agent-home>/ica.config.json - User config:
~/.<agent-home>/ica.config.json(for example~/.claude/ica.config.json,~/.codex/ica.config.json) - Defaults:
ica.config.default.json
Notes:
<agent-home>is the tool-specific directory ICA installs into (.claude,.codex,.cursor, etc.).- Claude Code also has tool config files that are separate from ICA config:
- Hooks:
~/.claude/settings.json - MCP servers:
~/.claude.json
- Hooks:
Workflow settings (version bump rules, PR requirements, release automation, auto-merge) live in a separate file:
ica.workflow.json.
Workflow hierarchy (highest to lowest priority):
- AgentTask overrides (
workflow.*inside the AgentTask YAML) - Project workflow (preferred):
./.ica/workflow.json - Project workflow (compat):
./ica.workflow.jsonor./.<agent-home>/ica.workflow.json - User workflow:
~/.<agent-home>/ica.workflow.json - Defaults:
ica.workflow.default.json
To allow the agent to merge PRs (agent-performed merge, no gh pr merge --auto) after a NO FINDINGS
ICA-REVIEW-RECEIPT is present and checks are green, set auto_merge=true for the desired task tiers:
{
"medium": { "auto_merge": true },
"large": { "auto_merge": true },
"mega": { "auto_merge": true }
}Recommended: only auto-merge PRs targeting dev. Releases (dev -> main) remain explicit.
By default this repo uses self-review-and-merge:
- PR is required (branch protection), but GitHub required approvals may remain at 0.
- Review is required via the ICA Stage 3 receipt (
ICA-REVIEW-RECEIPT) as a skills-level merge gate.
If you want an additional, GitHub-native gate (at least 1 APPROVED review), set:
{
"medium": { "require_github_approval": true },
"large": { "require_github_approval": true },
"mega": { "require_github_approval": true }
}Notes:
- GitHub forbids approving your own PR (server-side rule). For self-authored PRs, approvals require a second GitHub identity/bot if you want this gate to pass.
autonomy.level(string) — L1/L2/L3 autonomy modeautonomy.work_item_pipeline_enabled(bool, defaulttrue) — auto-runcreate-work-items->plan-work-items->run-work-itemswhen actionable findings/comments are detectedautonomy.work_item_pipeline_mode(string, defaultbatch_auto) — confirmation behavior for actionable finding ingestionbatch_auto: no extra confirmationbatch_confirm: one grouped confirmationitem_confirm: per-item confirmation
Example:
{
"autonomy": {
"work_item_pipeline_enabled": true,
"work_item_pipeline_mode": "batch_auto"
}
}git.privacy(bool) — strip AI mentions from commits/PRsgit.privacy_patterns(array)git.branch_protection(bool)git.default_branch(string)git.require_pr_for_main(bool)
paths.story_path,paths.bug_path,paths.memory_pathpaths.docs_path,paths.summaries_path
team.default_reviewerteam.role_validation
agenttask.template_pathagenttask.template_validationagenttask.complexity_override
Model selection is user‑controlled via Claude Code settings (.claude/settings.json or ~/.claude/settings.json) or /model.
Skill publishing defaults are stored in the source registry (~/.ica/sources.json or $ICA_STATE_HOME/sources.json), not in ica.config.json.
Per-source publish fields:
publishDefaultMode:direct-push|branch-only|branch-prdefaultBaseBranch: target branch for publish operationsproviderHint:github|gitlab|bitbucket|unknownofficialContributionEnabled: marks a source as eligible for official contribution flow
Update via CLI:
node dist/src/installer-cli/index.js sources update --id=my-source \
--publish-default-mode=branch-pr \
--default-base-branch=main \
--provider-hint=github \
--official-contribution-enabled=false