agent-qa@0.2.5
The self-improving Agentic QA harness with Memory
AI Security Review
scanned 4d ago · by lpm-firewall-aiRuntime analytics use a built-in PostHog project key by default, and the package README does not disclose this collection. The configuration opt-out and limited inspected event fields reduce the risk, but undisclosed default runtime telemetry warrants a warning.
Static reason
One or more suspicious static signals were detected.
Trigger
CLI operations that emit analytics events, including initialization and test runs.
Impact
Operational usage metadata and generated run or test identifiers leave the machine; no credential or content exfiltration was identified.
Mechanism
The CLI composes the analytics dependency, which uses its default PostHog transport unless analytics.privacy is true.
AI rationale
Runtime analytics use a built-in PostHog project key by default, and the package README does not disclose this collection. The configuration opt-out and limited inspected event fields reduce the risk, but undisclosed default runtime telemetry warrants a warning.
Evidence
dist/cli-main.js.lpm-dependency-evidence-cf77bab7-1e09-44b9-af79-9fa442fb0b95/2/npm-linux/dist/index.js
Network endpoints1
us.i.posthog.com
Decision evidence
public snapshotAI called this Suspicious at 87.0% confidence as Dangerous Capability with medium false-positive risk.
Evidence for warning
- Analytics is enabled unless config sets analytics.privacy to true; the default transport uses a built-in PostHog project key.
- The analytics transport sends to https://us.i.posthog.com.
- CLI initialization and test runs emit usage events with operational counts, statuses, durations, and generated run or test IDs.
Evidence against
- The opt-out is available through analytics.privacy: true in the package configuration.
- The inspected events contain usage metadata rather than prompts, code, credentials, or arbitrary environment values.
- The manifest declares no install lifecycle scripts, and the flagged process execution is tied to explicit setup commands or local worker tasks.
Behavioral surface
ChildProcessCryptoDynamicRequireEnvironmentVarsFilesystemNetworkShell
HighEntropyStringsUrlStrings
Source & flagged code
5 flaggeddist/cli-main.jsView file
27import checkbox from "@inquirer/checkbox";
L28: import { exec, execFileSync, execSync, spawn, spawnSync } from "node:child_process";
L29: import { fileURLToPath } from "node:url";
High
18085eval: true,
L18086: execArgv: [],
L18087: name: "agent-qa-writer-lease-heartbeat",
High
1import { createRequire } from "node:module";
L2: import { guardJsonText, guardRunText, isGitHubActions, printRunText, reserveStdoutForData } from "@vostride/agent-qa-core/run-text-output";
L3: import { Command, InvalidArgumentError, Option } from "commander";
...
L17: import { runSafetyScope as runSafetyScope$1, runSafetyScope as runSafetyScope$2 } from "@vostride/agent-qa-safety-local";
L18: import { createServer, request } from "node:http";
L19: import { AGENT_ASK_FUNCTION_ID, ANALYSIS_GET_FUNCTION_ID, AUTHORING_DRAFT_EDIT_FUNCTION_ID, CHAT_HELP_ENTRIES, CHAT_RESOLVER_TABLE, EDITOR_LIVE_URL_FUNCTION_ID, FunctionInputError,...
...
L27: import checkbox from "@inquirer/checkbox";
L28: import { exec, execFileSync, execSync, spawn, spawnSync } from "node:child_process";
L29: import { file
Findings
4 High4 Medium4 Low
HighChild Processdist/cli-main.js
HighShelldist/cli-main.js
HighHidden Inline Dependency Executiondist/cli-main.js
HighRuntime Package Installdist/cli-main.js
MediumDynamic Requiredist/cli-main.js
MediumNetwork
MediumEnvironment Vars
MediumStructural Risk Force Deep Review
LowScripts Present
LowFilesystem
LowHigh Entropy Strings
LowUrl Strings
Affected versions and remediation
This report applies to agent-qa@0.2.5.
See all versions of agent-qa for other recorded verdicts.
- Review the evidence and your use of agent-qa@0.2.5 before allowing it. Restrict the permissions described in this report.
- Choose an independently verified alternative or release. This report does not establish that other versions are safe.
Evidence last updated: .
Think this verdict is wrong? Dispute it on GitHub or read how reports are produced.