Publish safety
Before every publish, xnpm checks what npm would actually ship. Sensitive files are blocked. The check runs again after the version bump, on the exact final state. For pre-install dependency scanning, see Security.
Agent safety — 2.30.0
Agent safety means no hidden prompt can hold the shell hostage. xnpm separates plan from execute, supports explicit --yes, and returns deterministic exit codes for approval-required work instead of waiting on stdin. See Agents.
--plan --json resolves intent to a command without running it.4 in non-TTY, CI=true, XNPM_AGENT=1, or --agent contexts.
Stack releases can keep local file: development links while publishing registry-safe packages. With syncInternalDepsOnPublish, xnpm rewrites in-stack local deps to the published registry version for publish, installs, publishes, and restores the local specs afterward.
file:../jobs-db becomes ^<publishedVersion> only for the downstream publish step.syncInternalDepsOnPublish: true — not every file: dependency.How it works
The publish path in xnpm is a gauntlet, not a formality. Every step must pass before the real npm publish command is called.
npm pack --dry-run --json and inspects every file that would be included in the package.
npm publish succeeds, xnpm checks the registry for the new version and retries while npm replication lag catches up, instead of failing the run and skipping git push. If npm reports the version was already published, xnpm verifies it and continues.
Guarantee
--fix refreshes in-house @x12i/* / @exellix/* only; public toolchain bumps require --fix-public.xnpm validate --build catches broken installs.