Skip to main content
Removing an entry from 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

The plan marks pruned items with -:

Apply the prune

Incompatible with --service

Destructive operations don’t belong in an unattended loop. Run prune as a one-shot after editing 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 from gaal.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.

Dry-run

gaal sync

MCP servers