gaal.yaml doesn’t, by default, delete what gaal previously installed. The leftover files are called orphans. gaal sync --prune cleans them up.
Pruning is opt-in because the safe default is “leave alone what I didn’t author this run.” If you removed a skill from gaal.yaml by accident, you don’t want gaal to delete it before you notice.
What gets pruned
Always preview a prune
-:
Apply the prune
Incompatible with --service
gaal.yaml.
How gaal knows what it managed
gaal records what it installed each cycle. A skill or MCP entry is considered gaal-managed if a previous sync wrote it. When you remove it fromgaal.yaml and run --prune, that record is what authorises the deletion.
If you delete the gaal state file by hand, gaal forgets what it managed and --prune becomes a no-op until you sync again.