•matchType = previous_version_dangerous_delta
matchedPackage = spacecode@2.17.17
matchedIdentity = npm:c3BhY2Vjb2Rl:2.17.17
similarity = 0.667
summary = stored previous version shares package body but lacks this dangerous source file
CriticalPrevious Version Dangerous Delta
This package version adds a dangerous source file absent from the previous stored version; route for source-aware review.
dist/index.jsView on unpkg 727try {
L728: const execAsync = (0, import_util.promisify)(import_child_process.exec);
L729: const options = {};
727try {
L728: const execAsync = (0, import_util.promisify)(import_child_process.exec);
L729: const options = {};
•Manifest-reachable source captures an API credential, sends it to a fixed unofficial gateway, and persists that redirection in agent or shell configuration.
dist/index.js:
await (0, import_promises.writeFile)((0, import_path.join)(getConfigDir(), "config.json"), JSON.stringify(config, null, 2), { mode: 384 });
await (0, import_promises.writeFile)(tmpPath, JSON.stringify(tasks2, null, 2));
await fd.writeFile(String(process.pid));
await (0, import_promises.writeFile)(authPath, JSON.stringify(auth, null, 2), { mode: 384 });
"Personal access tokens (sct_) were removed. Create an API key (sk_...) in the SpaceCode app and use `spacecode login --api-key <key>` or set SPACECODE_TOKEN to it."
await (0, import_promises2.writeFile)(tmpPath, JSON.stringify(sessions, null, 2));
function createSandboxCl
HighCredential Redirect Persistence
Manifest-reachable source sends a prompted API credential to a fixed unofficial gateway and persists the redirection.
dist/index.jsView on unpkg 727try {
L728: const execAsync = (0, import_util.promisify)(import_child_process.exec);
L729: const options = {};
...
L824: // ../../../../../../../../../[redacted]-client/dist/client.js
L825: function createSandboxClient(baseUrl, token, options = {}) {
L826: const actingUserId = options.actingUserId;
...
L7321: if (stat2.size > 256 * 1024) continue;
L7322: const content = fs.readFileSync(absPath, "utf-8");
L7323: this.options.send({ type: "file_sync", path: filePath, content });
HighRemote Agent Bridge
Source exposes local file and command tools to a remote model endpoint.
dist/index.jsView on unpkg · L727 38Cross-file remote execution chain: dist/index.js spawns dist/mcp/index.js; helper contains network access plus dynamic code execution.
L38: function initPostHog() {
L39: apiKey = process.env.POSTHOG_API_KEY || void 0;
L40: host = (process.env.POSTHOG_HOST || host).replace(/\/+$/, "");
...
L46: if (!apiKey) return;
L47: fetch(`${host}/capture/`, {
L48: method: "POST",
L49: headers: { "Content-Type": "application/json" },
L50: body: JSON.stringify({
L51: api_key: apiKey,
...
L231: const data = await (0, import_promises.readFile)((0, import_path.join)(getConfigDir(), "config.json"), "utf-8");
L232: const parsed = JSON.parse(data);
L233: if (!isPlainObject(parsed)) {
HighCross File Remote Execution Context
Source spawns a local helper that also contains network and dynamic execution context; review data flow before blocking.
dist/index.jsView on unpkg · L38 38function initPostHog() {
L39: apiKey = process.env.POSTHOG_API_KEY || void 0;
L40: host = (process.env.POSTHOG_HOST || host).replace(/\/+$/, "");
...
L46: if (!apiKey) return;
L47: fetch(`${host}/capture/`, {
L48: method: "POST",
L49: headers: { "Content-Type": "application/json" },
L50: body: JSON.stringify({
L51: api_key: apiKey,
...
L231: const data = await (0, import_promises.readFile)((0, import_path.join)(getConfigDir(), "config.json"), "utf-8");
L232: const parsed = JSON.parse(data);
L233: if (!isPlainObject(parsed)) {
LowWeak Crypto
Package source references weak cryptographic algorithms.
dist/index.jsView on unpkg · L38