Skip to main content
tighten joins the environment model (every server’s tools and filesystem roots) with aspex trace activity (which tools were called, which paths were read or written) and recommends the narrowest configuration that would have supported what actually happened.

Tool allowlists

Observed tools are always kept. Unobserved tools are candidates, phrased as such: “not observed in available traces” is not “never needed”. Below --min-calls (default 20) the evidence is labelled weak and the list is a hint, not a recommendation.

Filesystem roots

Roots are collapsed to two components below home. Paths that appear inside file contents (a README mentioning ~/.ssh) are ignored; only path-shaped arguments count. A server already scoped to a project gets no root recommendation. The reduction is qualitative: SIGNIFICANT, MODERATE, or LIKELY SIGNIFICANT when the evidence is weak. Aspex does not print a percentage it cannot justify.

What it never does

  • It never edits your configuration. Apply the change in your client, then run aspex lock again.
  • It never calls an unobserved server unused. Servers with no activity in the window are listed separately with the caveat that absence in traces is not proof of disuse.
  • It needs real traces: with no events in the window it says so and recommends nothing.