Rune Gurd docs

Posture drift

[`guard scan`](scan.md) reports posture at one point in time. `guard posture` adds an approved baseline and reports what has drifted from it since: a risky setting that wasn't there, or an MCP server that was added, enabled or redefined.

guard posture drift
guard posture approve --expect DIGEST --reason "reviewed new MCP server"
guard posture history
guard posture monitor

How it works

Drift is always computed against the last approved baseline, not the previous scan. A change stays reported until someone approves it or it is undone.

Nothing is approved implicitly. Until the first approval, drift reports no_approved_baseline and no findings. That doesn't mean the posture is safe. An approval is refused if the posture changed after you reviewed it, and each approval is kept in an audit record.

Changes that loosen a setting are findings. Changes that tighten one are listed apart. If a file wasn't read, its entries are reported as unknown, never as unchanged.

Reports hold catalog names and SHA-256 digests only, never paths, values, server names or file contents.

guard posture monitor checks again when Guard sees a write to a settings or MCP file, and on a schedule.

Written from docs/posture-drift.md at commit 38c70c0a68f8.