The workflow
An agent can skip steps it already has what it needs for; calling
reconcile directly with a hand-written config is fine. It should not assume an output shape without calling capabilities first, since passes, formats, and schemas vary by installed version.
Discover what this build can do
Profile a file before mapping it
ambiguous is a fact about the column, not a decision. It’s true when the top two type candidates are within 0.10 confidence of each other. inspect never proposes a mapping; config infer builds on this profile to do that.
Let it propose the config
ready only when the date, amount, and reference mappings each reach 0.90 confidence, each leads its runner-up by 0.10, and at least 100 rows parsed successfully per source. Otherwise it returns needs_input and names which column it couldn’t resolve. It never guesses.
Without --out, a needs_input proposal is still exit code 0; that’s not a failure, just an unresolved column. With --out, ambiguity writes nothing and exits 2 with INFERENCE_AMBIGUOUS.
The --agent flag
--agent changes two defaults: JSON diagnostics on stderr, and for reconcile, NDJSON output with exceptions_only. Any flag you set explicitly overrides it. The precedence rule, stated once: explicit flag > pair/config value > --agent default > built-in default.
--agent also refuses interactive commands like config init. It returns a structured diagnostic naming a non-interactive alternative (config infer, or a hand-written reconify.yaml) instead of hanging on a prompt. That’s the difference between an agent failing fast and an agent timing out.
One-shot reconciliation
--auto takes exactly two positional files: no --config, --pair, --left-file, or --right-file. It applies the same confidence gates as config infer before reconciling.
On success, run_info carries inferred_config (the exact YAML used) and inference_confidence, so the run is reproducible non-auto by writing that config to a file. On a gate failure, it returns INFERENCE_AMBIGUOUS with exit code 2 and no result data.
When something fails
suggestions is there specifically so an agent has a next action instead of a dead end.
Exit codes
The one that trips people up: 3 and 4 are not failures. The run completed and found unmatched rows or exceptions. Those codes only fire when you’ve explicitly opted in with
--fail-if-unmatched or --fail-if-exceptions.
Install ready-made skills
.agents/skills/, plus adapters in .claude/skills/ and .codex/skills/: reusable workflows an agent picks up automatically instead of you re-explaining the CLI in every prompt.
Give your agent context
reconify capabilities is the live source of truth for what a given build supports; prefer it over a cached description of the CLI. This site also publishes llms.txt and llms-full.txt for agents that read documentation directly.
A short system-prompt snippet, if you’re wiring Reconify into a fixed agent role: