gaal sync --dry-run runs the full audit and planning pipeline but writes nothing. It’s the safety net you reach for whenever you’re not sure what’s in the pipeline.
The basics
Exit codes
--dry-run uses the exit code as a status signal so you can drive it from scripts:
Machine-readable output
jq or feeding a CI step. The ASCII banner is suppressed automatically when -o json is set.
Combining with other flags
CI pattern: fail the build on drift
Run dry-run withset -e in CI to fail when checked-in skills/MCP entries don’t match the committed config: