Deterministic orchestrator for CLI coding agents (Claude Code, Codex, Gemini CLI, and 40+ more). No model in the coordination loop, so parallel runs in per-task git worktrees replay byte-identically. Signed lineage plus an opt-in HMAC audit chain a reviewer checks offline, without rerunning it. Cluster mode, air-gap deploy.
The publisher performed an authenticated act of publication — proving control of a namespace in the official MCP registry, or appearing in a first-party catalogue an operator curates. That establishes WHO published it. It is not a security finding, and attested artifacts carry Flagged verdicts too.
269 critical findings reported by cisco-skill-scanner, 54 of them in the installed artifact. The composite score alone does not reflect this — read the per-scanner reports below.
This artifact ships from 3 sources and their verdicts differ. The worst is github (Flagged). Installing from a cleaner source does not mean the others are safe — check the source you actually install from.
github: https://github.com/sipyourdrink-ltd/bernstein, 1998 findings
Choose your runtime: the CLI writes the mcpServers config entry for that target.
nerlo install --target claude-code -- bernstein
Install respects the composite badge: Clean proceeds, Caution prompts for confirmation, and Flagged is refused. Write operations require an API token.
5 of 11 scanners examined this package. The rest do not apply to it — language, ecosystem and packaging decide which analyzers can say anything, and a scanner that cannot examine an artifact reports nothing rather than passing it.
v2.0.11
1776 findings · 252.4s
v0.3.74
Timed out
0 findings · 450.0s
v0.2.0
91 findings · 89.5s
v0.2.0
131 findings · 89.7s
v0.1.0
0 findings · 336.5s
v1.4.0
None of the entry points this scanner reads were found in this artifact. What each scanner covers
0 findings · 0.2s
vv0.3.2
No Go packages were found in this artifact. What each scanner covers
0 findings · 0.1s
No report in this scan: govulncheck, osv-scanner, trivy, trivy_image.
2 scans on record. Every scan's full results are retained immutably for 24 months.
| Completed | Composite | Change | Scanners | Status |
|---|---|---|---|---|
| Sep 11, 2026 | Scan Halted | — | agentshield ·n/a: not applicablecisco-skill-scanner: completeagent-audit-kit ·!: timeoutnerlo-behavioral: completenerlo-install-instruction: completecapslock ·n/a: not applicablenerlo-multi-source: complete | rejected |
| Aug 1, 2026 | Flagged55 | — | agentshield ·n/a: not applicablecisco-skill-scanner ·!: timeoutagent-audit-kit ·!: timeoutnerlo-behavioral ·!: timeoutnerlo-install-instruction ·!: timeoutnerlo-multi-source ·!: incompletetrivy: completeosv-scanner: complete | completed |
Findings in files this artifact installs stand as reported; a model re-read the rest and said which ones it believes are false positives. This is a second opinion published beside the evidence, not a correction to it: the per-scanner reports above are unchanged, every dismissed finding is still listed there at its original severity, and the score and the Flagged badge are computed from those raw severities alone. Nothing below moved them.
Out of 1,998 findings across every scanner that examined this package. 169 of 269 findings rated critical by their scanner were among the dismissals.
Not reviewed is not the same as clean. Those 275 findings stand exactly as their scanners reported them, at full severity, as they would have without this review.
Two keys had to turn. The model had to name a reason from a fixed list of six, and a deterministic check of ours — over which files this artifact actually installs — had to independently agree. Anything it could not corroborate is in “not reviewed” above, at full severity.
561 Test or fixture file — The match is in a test or fixture. Our own check confirmed the file is not part of what gets installed.
Rules: YARA_command_injection_generic, COMMAND_INJECTION_EVAL, DATA_EXFIL_SOCKET_CONNECT and 25 more · Files: /repo/tests/pentest/test_incident_containment.py, /repo/tests/pentest/test_mcp_attacks.py, /repo/tests/pentest/test_merge_attacks.py and 119 more · reported by cisco-skill-scanner
298 Documentation or example — The match is in documentation or sample code, confirmed by our own check to be outside the installed artifact.
Rules: YARA_prompt_injection_generic, opt.nerlo-rules.nerlo-install-pipe-to-shell, PROMPT_INJECTION_IGNORE_INSTRUCTIONS and 13 more · Files: /repo/docs/operations/skill-lint.md, /repo/docs/adapters/ADAPTER_GUIDE.md, /repo/docs/adapters/index.md and 126 more · reported by cisco-skill-scanner, nerlo-install-instruction, nerlo-behavioral
12 Agent instruction file — The match is in a file that instructs an AI coding agent — a CLAUDE.md or similar. It is documentation of intent, and our own check confirmed it is not part of what gets installed.
Rules: TOOL_ABUSE_UNDECLARED_NETWORK · Files: /repo/tests/repo/tests/AGENTS.md, /repo/examples/repo/examples/README.md, /repo/tests/integration/repo/tests/integration/README.md and 9 more · reported by cisco-skill-scanner
10 CI or editor configuration — The match is in build, CI or editor configuration, confirmed by our own check to be outside the installed artifact.
Rules: FILE_MAGIC_MISMATCH · Files: /repo/.github/workflows/bisect-on-red.yml, /repo/.github/workflows/volunteer-verify.yml, /repo/.github/workflows/contract-drift-autofix.yml and 2 more · reported by cisco-skill-scanner
4 Placeholder value — The matched literal is a placeholder or example — the kind of value a scanner reads as a secret and a human reads as a blank to fill in.
Rules: YARA_credential_harvesting_generic · Files: /repo/examples/plugins/custom-guardrail/tests/test_guardrail.py, /repo/tests/unit/test_log_redact.py · reported by cisco-skill-scanner
These findings are in files this artifact installs and are not placeholder values. No false-positive basis can be corroborated for such a finding, so this review never dismisses one; they were not sent to the model and stand at their scanner's severity.
196 DATA_EXFIL_NETWORK_REQUESTS
Files: /repo/scripts/capture_webui_renders.py, /repo/scripts/copr_build_watch.py, /repo/scripts/generate-earn-only-acceptance-rate.py and 59 more · reported by cisco-skill-scanner
91 MANIFEST_MISSING_LICENSE
Files: /repo/packages/cursor-plugin/skills/bernstein-agents/SKILL.md, /repo/packages/cursor-plugin/skills/bernstein-cost/SKILL.md, /repo/packages/cursor-plugin/skills/bernstein-quality/SKILL.md and 88 more · reported by cisco-skill-scanner
63 SOCIAL_ENG_VAGUE_DESCRIPTION
Files: /repo/SKILL.md, /repo/Formula/SKILL.md, /repo/verify_cli/SKILL.md and 60 more · reported by cisco-skill-scanner
46 HIDDEN_DATA_FILE
Files: /repo/.clusterfuzzlite/project.yaml, /repo/.bandit-baseline.json, /repo/.goosehints and 40 more · reported by cisco-skill-scanner
42 COMMAND_INJECTION_EVAL
Files: /repo/src/bernstein/benchmark/programbench.py, /repo/src/bernstein/core/agents/container.py, /repo/src/bernstein/core/sandbox/backend.py and 19 more
The model could have called any of these a false positive and did not.
132 YARA_autonomy_abuse_generic
Files: /repo/tests/unit/test_failure_reduction.py, /repo/docs/operations/SKILL.md · reported by cisco-skill-scanner
4 YARA_code_execution_generic
Files: /repo/scripts/run_tests.py · reported by cisco-skill-scanner
1 PIPELINE_TAINT_FLOW
Files: /repo/docs/llms-full.txt · reported by cisco-skill-scanner
227 The review budget for this scan was already spent before these findings were reached.
Rules: PIPELINE_TAINT_FLOW, EXCESSIVE_FILE_COUNT, HIDDEN_DATA_FILE and 6 more · Files: /repo/docs/adapters/ADAPTER_GUIDE.md, /repo/docs/operations/TROUBLESHOOTING.md, /repo/docs/. and 142 more · reported by cisco-skill-scanner, nerlo-install-instruction
44 The model called these false positives and our own check did not agree, so the dismissal was refused.
Rules: SECRET_GITHUB_TOKEN, SECRET_AWS_KEY, YARA_credential_harvesting_generic · Files: /repo/examples/plugins/custom-guardrail/tests/test_guardrail.py, /repo/tests/unit/knowledge/test_diary.py, /repo/tests/unit/security/test_redactor_mask.py and 10 more · reported by cisco-skill-scanner
4 The model gave no reason we were willing to publish, and a verdict without one is not usable evidence.
Rules: PIPELINE_TAINT_FLOW, YARA_code_execution_generic · Files: /repo/tests/pentest/test_merge_attacks.py · reported by cisco-skill-scanner
Critical command injection and credential exposure risks identified.
The artifact contains critical command injection vulnerabilities in Python files such as `/repo/benchmarks/swe_bench/run.py` and `/repo/src/bernstein/core/agents/container.py`, allowing for shell execution. JavaScript files like `/repo/packaging/npm/install.js` also exhibit command injection via child processes. Additionally, a GitHub token is present in `/repo/examples/plugins/custom-guardrail/tests/test_guardrail.py`, posing a credential access risk. Script injection is also noted in `/repo/src/bernstein/cli/display/splash_v2.py`.
Concern level assessed by the review: Critical. This is the review's scale, not the registry badge.
Reviewed by gemini-2.5-flash. The model sees the findings, not your code, and cannot change a score.
39 opt.nerlo-rules.nerlo-bind-all-interfaces
Files: /repo/src/bernstein/cli/commands/blast_radius_cmd.py, /repo/src/bernstein/cli/commands/graph_cmd.py, /repo/src/bernstein/cli/display/drain_screen.py and 23 more · reported by nerlo-behavioral
36 opt.nerlo-rules.nerlo-py-secret-to-network-egress
Files: /repo/scripts/capture_webui_renders.py, /repo/scripts/project_pulse.py, /repo/scripts/trunk_health_slo.py and 26 more · reported by nerlo-behavioral
28 RESOURCE_ABUSE_INFINITE_LOOP
Files: /repo/scripts/copr_build_watch.py, /repo/src/bernstein/bridges/openclaw_gateway.py, /repo/src/bernstein/cli/live.py and 17 more · reported by cisco-skill-scanner
23 YARA_autonomy_abuse_generic
Files: /repo/src/bernstein/core/orchestration/orchestrator.py, /repo/src/bernstein/core/trackers/webhook_receiver.py, /repo/src/bernstein/core/persistence/batch_ledger.py · reported by cisco-skill-scanner
19 PIPELINE_TAINT_FLOW
Files: /repo/src/bernstein/adapters/goose.py, /repo/src/bernstein/adapters/opencode.py, /repo/src/bernstein/adapters/cursor.py and 7 more · reported by cisco-skill-scanner
17 DATA_EXFIL_JS_NETWORK
Files: /repo/sdk/typescript/src/adapters/slack.ts, /repo/sdk/typescript/src/adapters/teams.ts, /repo/sdk/typescript/src/client.ts and 5 more · reported by cisco-skill-scanner
17 opt.nerlo-rules.nerlo-install-run-bundled-artifact
Files: /repo/.well-known/security.txt, /repo/CONTRIBUTORS.md, /repo/README.md and 8 more · reported by nerlo-install-instruction
9 DATA_EXFIL_SENSITIVE_FILES
Files: /repo/src/bernstein/core/security/sigstore_attestation.py, /repo/src/bernstein/adapters/claude_wrapper_script.py, /repo/src/bernstein/cli/display/splash_screen.py and 3 more · reported by cisco-skill-scanner
9 opt.nerlo-rules.nerlo-py-dynamic-exec
Files: /repo/src/bernstein/core/preview/manager.py, /repo/src/bernstein/core/quality/janitor.py, /repo/src/bernstein/core/quality/quality_gates.py and 4 more · reported by nerlo-behavioral
9 YARA_code_execution_generic
Files: /repo/src/bernstein/core/quality/fast_path.py, /repo/src/bernstein/cli/commands/security_review_cmd.py, /repo/scripts/quorum_request_reviews.py · reported by cisco-skill-scanner
6 COMMAND_INJECTION_JS_CHILD_PROCESS
Files: /repo/packaging/npm/index.js, /repo/packaging/npm/install.js · reported by cisco-skill-scanner
6 EXCESSIVE_FILE_COUNT
Files: /repo/src/bernstein/cli/., /repo/src/bernstein/core/security/., /repo/src/bernstein/adapters/. and 3 more · reported by cisco-skill-scanner
6 FILE_MAGIC_MISMATCH
Files: /repo/templates/roles/vp/system_prompt.md, /repo/templates/roles/analyst/task_prompt.md, /repo/.clusterfuzzlite/requirements.txt and 1 more · reported by cisco-skill-scanner
6 MANIFEST_INVALID_NAME
Files: /repo/verify_cli/bernstein_verify_receipt/SKILL.md, /repo/templates/roles/_includes/SKILL.md, /repo/src/bernstein/_default_templates/SKILL.md and 3 more · reported by cisco-skill-scanner
6 opt.nerlo-rules.nerlo-js-secret-to-network-egress
Files: /repo/templates/cloudflare-agent/src/workflows/task-workflow.ts · reported by nerlo-behavioral
5 SECRET_CONNECTION_STRING
Files: /repo/src/bernstein/cli/commands/ctx_cmd.py, /repo/src/bernstein/core/datasources/connection.py · reported by cisco-skill-scanner
4 YARA_script_injection_generic
Files: /repo/src/bernstein/cli/display/splash_v2.py · reported by cisco-skill-scanner
3 GLOB_HIDDEN_FILE_TARGETING
Files: /repo/src/bernstein/core/observability/trace_store.py, /repo/src/bernstein/core/cost/cost.py, /repo/src/bernstein/core/persistence/wal_replay.py · reported by cisco-skill-scanner
3 LOW_ANALYZABILITY
Files: /repo/packaging/npm, /repo/packages/vscode, /repo/web · reported by cisco-skill-scanner
2 COMMAND_INJECTION_SHELL_TRUE
Files: /repo/src/bernstein/plugins/security_review.py · reported by cisco-skill-scanner
2 HIDDEN_EXECUTABLE_SCRIPT
Files: /repo/.clusterfuzzlite/build.sh, /repo/.clusterfuzzlite/fuzz_seed_parser.py · reported by cisco-skill-scanner
2 TOOL_ABUSE_SYSTEM_PACKAGE_INSTALL
Files: /repo/scripts/build_packages.sh · reported by cisco-skill-scanner
2 TOOL_ABUSE_UNDECLARED_NETWORK
Files: /repo/repo/00-AGENT.md, /repo/sdk/python/repo/sdk/python/README.md · reported by cisco-skill-scanner
1 DATA_EXFIL_SOCKET_CONNECT
Files: /repo/src/bernstein/core/preview/port_capture.py · reported by cisco-skill-scanner
1 YARA_coercive_injection_generic
Files: /repo/src/bernstein/core/fleet/connection.py · reported by cisco-skill-scanner
1 YARA_indirect_prompt_injection_generic
Files: /repo/src/bernstein/eval/cases/tool_surface/06_risky_triple_no_auth.yaml · reported by cisco-skill-scanner
1 YARA_prompt_injection_unicode_steganography
Files: /repo/src/bernstein/core/skills/sanitizer.py · reported by cisco-skill-scanner
Showing 25 of 219; the rest are in the per-scanner reports above.