registry / @sortlist/cli / 0.41.0
@sortlist/cli@0.41.0
Sortlist platform CLI — GraphQL federation client
AI Security Review
scanned 1mo ago · by lpm-firewall-aiThe flagged primitives are consistent with the inspected GraphQL CLI, browser login, and same-package update behavior. No concrete malicious chain was established, and configurable authenticated API access alone does not warrant a warning.
Static reason
One or more suspicious static signals were detected.
Trigger
Running sl activates API access, telemetry, and version checking; prepare performs Git hook setup.
Impact
Normal CLI state and package updates occur; inspected source establishes no malicious harvesting, foreign agent mutation, or unrelated payload execution.
Mechanism
The launcher starts local package code; the runtime authenticates GraphQL requests and updates the same npm package.
AI rationale
The flagged primitives are consistent with the inspected GraphQL CLI, browser login, and same-package update behavior. No concrete malicious chain was established, and configurable authenticated API access alone does not warrant a warning.
Network endpoints3
federation.sortlist.com/graphqlhermes.production.sortlist.cloud/oauth/tokenregistry.npmjs.org
Decision evidence
public snapshotAI called this Clean at 91.0% confidence as Benign with low false-positive risk.
Evidence for AI clean decision
- package.json has prepare-only Git hook setup, no registry install hooks, and no runtime self-dependency.
- bin/sl.mjs launches the package entrypoint with forwarded CLI arguments.
- dist/index.js defaults to the Sortlist federation service and uses bearer authentication for API requests.
- Schema introspection uses the CLI's saved credentials and selected API endpoint as part of its configurable GraphQL client.
- The runtime updater installs the same package and removes its own stale npm directories.
- Saved credentials use owner-only file permissions.
Evidence against
Behavioral surface
ChildProcessCryptoEnvironmentVarsFilesystemNetworkShell
HighEntropyStringsUrlStrings
NoLicense
Source & flagged code
3 flaggedbin/sl.mjsView file
1#!/usr/bin/env node
L2: import { execFileSync } from 'node:child_process';
L3: import { existsSync, readFileSync } from 'node:fs';
High
1Cross-file remote execution chain: bin/sl.mjs spawns dist/index.js; helper contains network access plus dynamic code execution.
L1: #!/usr/bin/env node
L2: import { execFileSync } from 'node:child_process';
L3: import { existsSync, readFileSync } from 'node:fs';
...
L6:
L7: const __dirname = dirname(fileURLToPath(import.meta.url));
L8: const selfRoot = resolve(__dirname, '..');
...
L11: * Walk upward from `start` looking for a @sortlist/cli checkout
L12: * (package.json with name === "@sortlist/cli" and no .published sentinel).
L13: * Returns the package root, or null.
...
L20: try {
L21: const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
L22: if (pkg.name === '@sortlist/cli' && !existsSync(resolve(dir, '.published'))) {
High
Cross File Remote Execution Context
Source spawns a local helper that also contains network and dynamic execution context; review data flow before blocking.
bin/sl.mjsView on unpkg · L1package.jsonView file
Findings
3 High2 Medium7 Low
HighChild Processbin/sl.mjs
HighShell
HighCross File Remote Execution Contextbin/sl.mjs
MediumNetwork
MediumEnvironment Vars
LowNon Install Lifecycle Scripts
LowScripts Present
LowFilesystem
LowHigh Entropy Strings
LowUrl Strings
LowNo License
LowSuspicious Lifecycle Evidencepackage.json
Affected versions and remediation
This report applies to @sortlist/cli@0.41.0.
See all versions of @sortlist/cli for other recorded verdicts.
- Review the evidence and your use of @sortlist/cli@0.41.0 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.