Some of the most important Agentix features are not flashy. They are guardrails around boring failure modes.

Two examples shaped the MVP: dirty Git trees and stale patches.

Dirty trees

A dirty Git tree makes automation harder to reason about. If files are already modified, an agent cannot easily tell which changes belong to the current proposal and which were pre-existing.

Agentix now refuses important flows when the tree is dirty, unless the user explicitly passes:

--allow-dirty

That gives the operator an escape hatch, but makes the risk explicit.

Nix flakes and tracked files

One lesson came from Nix flakes inside Git repositories: untracked files are invisible to the flake evaluation.

That means if Agentix creates a new module file, it also needs to add it to Git before verification. Otherwise Nix may not see the file.

Agentix now adds changed files to Git in the flows where new files are created, so verification sees what the final commit would see.

Stale patches

Saved patches can become stale. A patch that applied cleanly yesterday may fail today because the file has changed.

Agentix now checks patches before asking for approval. This matters because asking a human to approve a patch that cannot apply is bad UX and bad safety design.

The flow now looks like this:

check patch
if stale: refuse before prompt
if clean: show patch and ask for approval

This stale-patch protection was added to:

  • agentix apply
  • agentix apply-verify
  • goal-runner apply flows

Proposal status

Agentix proposal listing now shows whether saved patches are clean or stale:

agentix proposals list --path ~/nixos-config

Example:

Saved proposals:
- [clean] clean.patch
- [stale] stale.patch

There is also JSON output:

agentix proposals list --path ~/nixos-config --json

This lets future tools and agents inspect proposal state without scraping human-readable output.

Stale-only cleanup

Agentix can now delete only stale proposals while preserving clean ones:

agentix proposals clean --path ~/nixos-config --stale

And with JSON output:

agentix proposals clean --path ~/nixos-config --stale --yes --json
agentix proposals prune-stale --path ~/nixos-config --yes --json

The result is a proposal lifecycle that is safer for humans and easier for future agents to reason about.