registry  /  @zincapp/znvault-plugin-archon  /  0.2.0

@zincapp/znvault-plugin-archon@0.2.0

Archon deployment plugin for zn-vault-agent + znvault CLI (diff deploy, Prisma dynamic-secret migrations, service/reboot control)

AI Security Review

scanned 2h ago · by lpm-firewall-ai

The package is a deployment plugin with powerful but expected deploy and lifecycle controls. Source inspection did not identify unconsented install/import-time behavior or a concrete malicious chain.

Static reason
One or more suspicious static signals were detected.
Trigger
Explicit znvault archon CLI command or authenticated/hosted plugin route invocation.
Impact
Can modify configured appRoot files, run deployment maintenance commands, manage archon systemd services, and run Prisma migrations when invoked by the deployment workflow.
Mechanism
Diff deployment, service lifecycle control, and Prisma migration execution using dynamic database credentials.
Rationale
The static signals map to the package's stated deployment purpose and require explicit CLI or route invocation; no install-time mutation, stealth persistence, broad AI-agent hijack, credential exfiltration, or remote payload execution was found. The package should be treated as clean despite high-privilege deployment primitives because they are package-aligned and guarded by the surrounding deployment workflow.
Evidence
package.jsondist/index.jsdist/archon-manager.jsdist/cli/migration-runner.jsdist/routes/deploy.jsdist/differ.jsdist/routes/quiesce.jsdist/cli/commands.jsdist/deployment-journal.js<appRoot>/dist/**<appRoot>/prisma/**<appRoot>/scripts/archon-crypt/dist/**<appRoot>/package.json<appRoot>/package-lock.json<appRoot>/.deploy-journal.json~/.znvault/archon/configs.json
Network endpoints3
127.0.0.1:<healthProbePort>/quiesce127.0.0.1:<healthProbePort>/resume127.0.0.1:<healthProbePort>/quiesce/status

Decision evidence

public snapshot
AI called this Clean at 88.0% confidence as Benign with low false-positive risk.
Evidence for block
  • dist/routes/deploy.js runs user-invoked post-deploy commands: sudo -u cfg.user npm ci --omit=dev --ignore-scripts and npx prisma generate.
  • dist/archon-manager.js exposes sudo systemctl start/stop/restart/reboot for detected/configured archon services.
  • dist/cli/migration-runner.js spawns npx prisma migrate deploy with Vault-issued DATABASE_URL/DIRECT_URL.
  • dist/differ.js writes and deletes files under configured appRoot from deploy request payloads.
Evidence against
  • package.json has no install/preinstall/postinstall hook; only prepublishOnly builds before publishing.
  • Command execution is tied to explicit deploy/lifecycle routes or CLI commands, not import-time or install-time execution.
  • dist/differ.js bounds paths to appRoot and rejects symlink write-through before writing deploy files.
  • dist/cli/migration-runner.js uses package-aligned Vault dynamic secrets and revokes leases after Prisma exits; it avoids logging credentials.
  • Network use is package-aligned: agent deploy endpoints, Vault client adapter, and localhost quiesce proxy to 127.0.0.1.
  • No credential harvesting, external exfiltration endpoint, eval/vm/Function, native binary loading, or AI-agent control-surface mutation found.
Behavioral surface
Source
ChildProcessCryptoEnvironmentVarsFilesystemNetworkShell
Supply chain
UrlStrings
ManifestNo manifest risk signals triggered.
scanned 20 file(s), 86.2 KB of source, external domains: 127.0.0.1

Source & flagged code

2 flagged · loading source
dist/archon-manager.jsView file
1import { spawn } from 'node:child_process'; L2: import { detectArchonService } from './detect-service.js';
High
Child Process

Package source references child process execution.

dist/archon-manager.jsView on unpkg · L1
dist/cli/migration-runner.jsView file
75await new Promise((resolve, reject) => { L76: child = spawn('npx', ['prisma', 'migrate', 'deploy'], { L77: cwd: projectPath,
High
Runtime Package Install

Package source invokes a package manager install command at runtime.

dist/cli/migration-runner.jsView on unpkg · L75

Findings

3 High2 Medium4 Low
HighChild Processdist/archon-manager.js
HighShell
HighRuntime Package Installdist/cli/migration-runner.js
MediumNetwork
MediumEnvironment Vars
LowNon Install Lifecycle Scripts
LowScripts Present
LowFilesystem
LowUrl Strings