11import YAML, { parse, stringify } from "yaml";
L12: import { execFile, execFileSync, spawn, spawnSync } from "node:child_process";
L13: import { createInterface } from "node:readline";
...
L24: for (const dir of candidates) try {
L25: if (JSON.parse(readFileSync(resolve(dir, "package.json"), "utf8")).name === "@firatcand/roster") return dir;
L26: } catch {
...
L39: function claudeHome$1() {
L40: return process.env["ROSTER_CLAUDE_HOME"] ?? join(homedir(), ".claude");
L41: }
...
L59: agentsLayout: "md-copy",
L60: installLink: "https://claude.ai/code"
L61: },
CriticalCredential Exfiltration
Source appears to send environment or credential material to an external endpoint.
bin/roster.jsView on unpkg · L11 11Trigger-reachable chain: manifest.bin -> bin/roster.js
L11: import YAML, { parse, stringify } from "yaml";
L12: import { execFile, execFileSync, spawn, spawnSync } from "node:child_process";
L13: import { createInterface } from "node:readline";
...
L24: for (const dir of candidates) try {
L25: if (JSON.parse(readFileSync(resolve(dir, "package.json"), "utf8")).name === "@firatcand/roster") return dir;
L26: } catch {
...
L39: function claudeHome$1() {
L40: return process.env["ROSTER_CLAUDE_HOME"] ?? join(homedir(), ".claude");
L41: }
...
L59: agentsLayout: "md-copy",
L60: installLink: "https://claude.ai/code"
L61: },
CriticalTrigger Reachable Dangerous Capability
A package entrypoint or install-time lifecycle script reaches a source file with blocking dangerous behavior.
bin/roster.jsView on unpkg · L11 11import YAML, { parse, stringify } from "yaml";
L12: import { execFile, execFileSync, spawn, spawnSync } from "node:child_process";
L13: import { createInterface } from "node:readline";
HighChild Process
Package source references child process execution.
bin/roster.jsView on unpkg · L11 5224if (fromEnv !== void 0 && fromEnv !== "") return fromEnv;
L5225: const r = spawnSync("/bin/sh", ["-c", "command -v codex"], {
L5226: encoding: "utf8",
...
L5229: if (r.status === 0) {
L5230: const out = (r.stdout ?? "").trim();
L5231: if (out.length > 0) return out;
...
L5234: header: `${chalk.red.bold("roster:")} codex binary not found on PATH`,
L5235: body: " Install codex CLI (https://developers.openai.com/codex) and ensure it is on your PATH.",
L5236: remedy: " Or pass ROSTER_CODEX_PATH=/abs/path/to/codex when invoking roster.",
HighCommand Output Exfiltration
Source combines command execution, command-output handling, and outbound requests; review data flow before blocking.
bin/roster.jsView on unpkg · L5224 11import YAML, { parse, stringify } from "yaml";
L12: import { execFile, execFileSync, spawn, spawnSync } from "node:child_process";
L13: import { createInterface } from "node:readline";
...
L24: for (const dir of candidates) try {
L25: if (JSON.parse(readFileSync(resolve(dir, "package.json"), "utf8")).name === "@firatcand/roster") return dir;
L26: } catch {
...
L39: function claudeHome$1() {
L40: return process.env["ROSTER_CLAUDE_HOME"] ?? join(homedir(), ".claude");
L41: }
...
L59: agentsLayout: "md-copy",
L60: installLink: "https://claude.ai/code"
L61: },
MediumInstall Persistence
Source writes installer persistence such as shell profile or service configuration.
bin/roster.jsView on unpkg · L11 11import YAML, { parse, stringify } from "yaml";
L12: import { execFile, execFileSync, spawn, spawnSync } from "node:child_process";
L13: import { createInterface } from "node:readline";
...
L24: for (const dir of candidates) try {
L25: if (JSON.parse(readFileSync(resolve(dir, "package.json"), "utf8")).name === "@firatcand/roster") return dir;
L26: } catch {
...
L39: function claudeHome$1() {
L40: return process.env["ROSTER_CLAUDE_HOME"] ?? join(homedir(), ".claude");
L41: }
...
L59: agentsLayout: "md-copy",
L60: installLink: "https://claude.ai/code"
L61: },
LowWeak Crypto
Package source references weak cryptographic algorithms.
bin/roster.jsView on unpkg · L11