10661const result = spawnSync(command, {
L10662: shell: true,
L10663: cwd,
•Manifest-reachable source captures an API credential, sends it to a fixed unofficial gateway, and persists that redirection in agent or shell configuration.
dist/program-DgcwJN6Z.mjs:
import { appendFileSync, chmodSync, closeSync, copyFileSync, cpSync, createReadStream, existsSync, lstatSync, mkdirSync, openSync, readFileSync, readSync, readdirSync, readlinkSync...
import { createInterface } from "node:readline";
writeFileSync(join(targetPath, "Notes", "MEMORY.md"), memoryContent, "utf-8");
const claudeProjects = join(homedir(), ".claude", "projects");
writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
* ~/.claude.json's mcpServers / workers.mcpSets the same way `--mcp` is.
const claudeProjects = join(homedir(), ".claude", "projects");
claude_notes_exists: r.claudeNotesExis
HighCredential Redirect Persistence
Manifest-reachable source sends a prompted API credential to a fixed unofficial gateway and persists the redirection.
dist/program-DgcwJN6Z.mjsView on unpkg 29import chalk from "chalk";
L30: import { execFile, execFileSync, execSync, spawn, spawnSync } from "node:child_process";
L31: import { parseDocument } from "yaml";
...
L36: import BetterSqlite3 from "better-sqlite3";
L37: import http from "node:http";
L38: import { createInterface } from "node:readline";
...
L235: * Core project CRUD commands: add, list, info, archive, unarchive, move, tag,
L236: * alias, edit, detect, consolidate, go, rebind — plus private helpers levenshtein,
L237: * containsIgnoreCase, findProjectNotesDirs, and findMovedPath.
...
L249: function findProjectNotesDirs(project) {
L250: const claudeProjects = join(homedir(), ".claude", "projects");
L251: if (!existsSync(claudeProjects)) return [];
HighCommand Output Exfiltration
Source combines command execution, command-output handling, and outbound requests; review data flow before blocking.
dist/program-DgcwJN6Z.mjsView on unpkg · L29 •Manifest-trigger-reachable source links an external AI-agent control path to a behavior-bearing write operation.
l.template.md");
if (!existssync(templatepath)) {
console.log(c.warn("skill template not found: " + templatepath));
console.log(c.dim(" skipping pai skill installation."));
return false;
}
const skilldir = join(homedir(), ".claude", "skills", "pai");
const skillfile = join(skilldir, "skill.md");
if (existssync(skillfile)) {
const content = readfilesync(skillfile, "utf-8");
const isgenerated = content.includes("generated by pai setup");
if (isgenerated) console.log(c.dim(" found existing pai-generated skill.md."));
else {
console.log(c.yellow(" found existing skill.md (not pai-generated)."));
console.log(c.dim(" a backup will be created before overwri
HighTrigger Reachable External Ai Agent Control Surface Mutation
Manifest-trigger-reachable source writes behavior-bearing configuration into a user or project AI-agent control surface.
dist/program-DgcwJN6Z.mjsView on unpkg 29Trigger-reachable persistence chain: manifest.bin -> dist/cli/index.mjs -> dist/program-DgcwJN6Z.mjs
L29: import chalk from "chalk";
L30: import { execFile, execFileSync, execSync, spawn, spawnSync } from "node:child_process";
L31: import { parseDocument } from "yaml";
...
L36: import BetterSqlite3 from "better-sqlite3";
L37: import http from "node:http";
L38: import { createInterface } from "node:readline";
...
L235: * Core project CRUD commands: add, list, info, archive, unarchive, move, tag,
L236: * alias, edit, detect, consolidate, go, rebind — plus private helpers levenshtein,
L237: * containsIgnoreCase, findProjectNotesDirs, and findMovedPath.
...
L249: function findProjectNotesDirs(project) {
L250: const claudeProjects = join(homedir(), ".claude", "projects");
L251: if (!existsSync(
HighTrigger Reachable Persistence
A manifest entrypoint or package-local install chain reaches persistence behavior.
dist/program-DgcwJN6Z.mjsView on unpkg · L29 29import chalk from "chalk";
L30: import { execFile, execFileSync, execSync, spawn, spawnSync } from "node:child_process";
L31: import { parseDocument } from "yaml";
...
L36: import BetterSqlite3 from "better-sqlite3";
L37: import http from "node:http";
L38: import { createInterface } from "node:readline";
...
L235: * Core project CRUD commands: add, list, info, archive, unarchive, move, tag,
L236: * alias, edit, detect, consolidate, go, rebind — plus private helpers levenshtein,
L237: * containsIgnoreCase, findProjectNotesDirs, and findMovedPath.
...
L249: function findProjectNotesDirs(project) {
L250: const claudeProjects = join(homedir(), ".claude", "projects");
L251: if (!existsSync(claudeProjects)) return [];
MediumInstall Persistence
Source writes installer persistence such as shell profile or service configuration.
dist/program-DgcwJN6Z.mjsView on unpkg · L29 29import chalk from "chalk";
L30: import { execFile, execFileSync, execSync, spawn, spawnSync } from "node:child_process";
L31: import { parseDocument } from "yaml";
...
L36: import BetterSqlite3 from "better-sqlite3";
L37: import http from "node:http";
L38: import { createInterface } from "node:readline";
...
L235: * Core project CRUD commands: add, list, info, archive, unarchive, move, tag,
L236: * alias, edit, detect, consolidate, go, rebind — plus private helpers levenshtein,
L237: * containsIgnoreCase, findProjectNotesDirs, and findMovedPath.
...
L249: function findProjectNotesDirs(project) {
L250: const claudeProjects = join(homedir(), ".claude", "projects");
L251: if (!existsSync(claudeProjects)) return [];
LowWeak Crypto
Package source references weak cryptographic algorithms.
dist/program-DgcwJN6Z.mjsView on unpkg · L29