oc-pilot@0.143.0
CAUTION· install onlyPublisher claims: "Local AI code review, tested fixes, test-failure analysis and secret scanning for agent CLIs" Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Nothing executable in the bundle ran; the trace covers the install step only.- Tested
- every file read, file written and host contacted by what ran
- Not tested
- use of the skill by an agent
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (1 scenario; nothing executable in the bundle ran; the trace covers the install step only) on 2026-11-15 and scored it 75/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Access to sensitive file paths; Access to sensitive file paths; Access to sensitive file paths. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 1 scenarios · 0 deviationsStatic findings
summary: `задокументировать ${name} в .env.example`,Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.'+const key = "AKIAIOSFODNN7EXAMPLE";',Fix: Never read or enumerate credential locations; accept a documented environment variable instead.const result = runCli(["review", "--diff", diffPath, "--cwd", dir, "--json"], dir, { ...env, FAKE_FAIL: "1" });Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…v, import.meta.env, Deno.env and Bun.env reference is checked against the local .env files and the .env.example/.sample/.template documentation. Reports variables t…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const result = runCli(["review", "--diff", diffPath, "--cwd", dir, "--json", "--fail-on", "critical"], dir, { ...env, FAKE_CRITICAL: "1" });Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.console.log(JSON.stringify({ status, output, error: message.slice(0, 500) }));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.const resign = runCli(["flight", "export", "--bundle", "bundle.json", "--key", "flight.key", "--output", "resigned.json", "--json"], dir);Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.if (/^(?:process\.env|os\.environ|env\.|import\.meta\.env)/.test(trimmed))Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose....env,Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.test("setup --npx runs the MCP subcommand with a pinned version", () => {Fix: Pin versions and sources; vendor anything fetched at install time.patterns: [".env", ".env.*", "**/*.pem", "**/*.key"],Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.'+const key = "AKIAIOSFODNN7EXAMPLE";',Fix: Never read or enumerate credential locations; accept a documented environment variable instead.6. **Только чтение:** У тебя нет права изменять файлы, запускать shell или устанавливать зависимости. Не пытайся обойти это ограничение и не читай секреты (\`.env\`, ключи, credentials).Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.6. **Read-only:** You may not modify files, run shell commands, install packages, or read secrets (\`.env\`, keys, credentials). Never attempt to bypass these limits.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…havior the tests do not protect: add or strengthen the smallest test that would kill it, then call "mutate" again. Do not change production code only to satisfy a mu…Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.args.push("--claims", temp.write("polygraph-claims.json", JSON.stringify({ claims: input.claims })));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.… name: "honeypot", description: "Deploy or remove tempting decoy files (.env.backup, a bypassAuth helper, a legacy DROP TABLE helper) and report whether an …Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.assert.equal(payload.clients[1]?.config.mcpServers["oc-pilot"]?.serverUrl, "https://example.com/mcp");Fix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.const SIDE_EFFECT = /(?:from\s+["'](?:node:)?(?:fs|net|http|https|child_process)["']|require\(\s*["'](?:node:)?(?:fs|net|http|https|child_process)["']\s*\)|\bfetch\s*\(|\bprocess\.env\b)/;Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.console.log(JSON.stringify({ status: "ok", output }));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.writeFileSync(join(dir, ".env.example"), "EXISTING_KEY=\n", "utf8");Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const result = runCli(["review", "--diff", diffPath, "--cwd", dir, "--lang", "ru", "--json"], dir, { ...env, FAKE_LANG: "ru" });Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…ues and safe package.json fixes, Slop Index, environment variables missing from .env/.env.example, and weakened tests. With apply=true it applies only the safe depe…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.tasks.push({ id: `env:missing:${name}`, kind: "env", severity: "high", summary: `добавить ${name} в .env` });Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.console.log(JSON.stringify({ status: "done", results: output }));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…shold, fix the cheapest gap first: install the pre-commit hook for hooks, create AGENTS.md for docs, add .oc-pilot.json for config, run the suite for tests, and run oc-pilot receipt fo…Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.A suppression without a reason is ignored. `--ignore <rules>` skips whole rules and `--no-suppressions` disables inline suppressions.Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.args.push("--input", temp.write("oracle-cases.json", JSON.stringify({ cases: input.cases })));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.env-sync Переменные окружения из diff против .env и .env.exampleFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.A suppression without a reason is ignored. `--ignore <rules>` skips whole rules, `--no-suppressions` disables inline suppressions for an audit run.Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.// The write already used mode 0600; chmod is a best-effort hardening step.Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.'+const key = "AKIAIOSFODNN7EXAMPLE";',Fix: Never read or enumerate credential locations; accept a documented environment variable instead....env,Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.writeFileSync(join(dir, ".env"), "EXISTING_KEY=value\n", "utf8");Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.assert.equal(payload.clients[0]?.config.mcpServers["oc-pilot"]?.httpUrl, "https://example.com/mcp");Fix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.Cost to the agent
Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.
Known vulnerabilities
Not checked against OSV yet; the weekly check has not reached this version.
What would make this Verified
5 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim mynameisnikki: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- New publisher≈ +3 on the totalTime clears this on its own after 14 and 30 days. Claiming the handle (+50) is the fastest way past it.
- AWS access key pattern detected≈ +2 on the totalNever read or enumerate credential locations; accept a documented environment variable instead.
- File type combined with upload action≈ +2 on the totalRemove the call, or declare the host in frontmatter and explain in the README what is sent and why.
- npx invocation of non-well-known package≈ +2 on the totalPin versions and sources; vendor anything fetched at install time.