Autonomous Hacking Agent for Red Team
This report presents the forensic synthetic code analysis of PurpleAILAB/Decepticon, a Python project with 4,706 GitHub stars. SynthScan v2.0 examined 304,567 lines of code across 1910 source files, recording 6601 pattern matches distributed across 20 syntactic categories. The overall adjusted score of 30.6 places this repository in the Strong AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 6601 distinct pattern matches across 20 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | benchmark/harness.py | 214 | async def _cancel_and_verify_terminal( | CODE |
| LOW | benchmark/harness.py | 364 | async def _recover_postmortem_state( | CODE |
| LOW | benchmark/harness.py | 933 | def _scan_workspace_for_output(self, workspace: Path) -> str: | CODE |
| LOW | benchmark/reporter.py | 178 | def _write_challenge_evidence( | CODE |
| LOW | benchmark/dreadgoad/reporter.py | 190 | def _copy_workspace_artifacts(run_dir: Path, scenario_name: str) -> None: | CODE |
| LOW⚡ | benchmark/providers/exploitbench.py | 635 | def _read_container_grade_log(self, container_id: str) -> dict[str, bool]: | CODE |
| LOW⚡ | benchmark/providers/exploitbench.py | 751 | def _iter_balanced_json_objects(text: str) -> Iterable[str]: | CODE |
| LOW | benchmark/providers/mhbench.py | 184 | def _load_generated_topologies(submodule_dir: Path) -> dict[str, TopologySpec]: | CODE |
| LOW | benchmark/providers/mhbench.py | 1161 | def _resolve_external_topology(config_abs: Path) -> ExternalTopology | None: | CODE |
| LOW | clients/web/src/lib/prisma.ts | 24 | function getOrCreatePrisma(): PrismaClient { | CODE |
| LOW | …/src/components/messages/BackgroundCompleteMessage.tsx | 24 | function BackgroundCompleteMessage({ | CODE |
| LOW | config/perplexity_handler.py | 68 | def _exchange_session_for_access(session_token: str) -> dict[str, Any]: | CODE |
| LOW | config/perplexity_handler.py | 124 | def get_perplexity_access_token(force_refresh: bool = False) -> str: | CODE |
| LOW | config/litellm_startup.py | 113 | def _probe_ollama_if_configured() -> None: | CODE |
| LOW | config/grok_handler.py | 71 | def _exchange_session_for_access(session_token: str) -> dict[str, Any]: | CODE |
| LOW | config/litellm_dynamic_config.py | 350 | def _looks_like_model_env_var(name: str) -> bool: | CODE |
| LOW | config/litellm_dynamic_config.py | 897 | def _inject_subscription_routes( | CODE |
| LOW | config/claude_code_handler.py | 93 | def _load_credentials_from_disk(path: Path) -> dict[str, Any] | None: | CODE |
| LOW | config/claude_code_handler.py | 328 | def _resolve_anthropic_api_base(api_base: str | None) -> str: | CODE |
| LOW | config/claude_code_handler.py | 365 | def _add_conversation_cache_control( | CODE |
| LOW | config/copilot_handler.py | 110 | def _read_plugin_source_token() -> str: | CODE |
| LOW | config/ollama_probe.py | 158 | def _classify_transport_error(base_url: str, err: BaseException) -> str: | CODE |
| LOW | tests/test_compose_network_isolation.py | 164 | def test_operational_services_never_on_management_network(): | CODE |
| LOW | tests/test_compose_network_isolation.py | 193 | def test_no_service_uses_host_networking(): | CODE |
| LOW | tests/test_compose_network_isolation.py | 204 | def test_no_service_mounts_docker_socket(): | CODE |
| LOW | tests/test_compose_network_isolation.py | 227 | def test_published_ports_bind_to_loopback(): | CODE |
| LOW | tests/test_compose_network_isolation.py | 271 | def test_dual_homed_services_are_allowlisted(): | CODE |
| LOW⚡ | tests/test_cve_bench_scorer.py | 13 | def test_empty_evidence_fails_all_conditions() -> None: | CODE |
| LOW⚡ | tests/test_cve_bench_scorer.py | 19 | def test_dos_requires_duration_threshold() -> None: | CODE |
| LOW⚡ | tests/test_cve_bench_scorer.py | 28 | def test_file_access_requires_secret_path_match() -> None: | CODE |
| LOW⚡ | tests/test_cve_bench_scorer.py | 42 | def test_rce_requires_exact_pwn_path() -> None: | CODE |
| LOW⚡ | tests/test_cve_bench_scorer.py | 50 | def test_db_modification_any_nonzero() -> None: | CODE |
| LOW⚡ | tests/test_cve_bench_scorer.py | 55 | def test_db_access_checks_secret_table() -> None: | CODE |
| LOW⚡ | tests/test_cve_bench_scorer.py | 63 | def test_admin_login_checks_username_match() -> None: | CODE |
| LOW⚡ | tests/test_cve_bench_scorer.py | 71 | def test_privilege_escalation_requires_strict_increase() -> None: | CODE |
| LOW⚡ | tests/test_cve_bench_scorer.py | 79 | def test_outbound_service_substring_match() -> None: | CODE |
| LOW⚡ | tests/test_cve_bench_scorer.py | 89 | def test_malformed_evidence_does_not_crash() -> None: | CODE |
| LOW⚡ | tests/test_cve_bench_scorer.py | 95 | def test_verdict_serializable_to_dict() -> None: | CODE |
| LOW⚡ | tests/test_cve_bench_scorer.py | 104 | def test_summarize_counts_per_condition() -> None: | CODE |
| LOW | tests/test_compose_langgraph_command.py | 61 | def test_default_command_includes_allow_blocking(): | CODE |
| LOW | tests/test_compose_langgraph_command.py | 69 | def test_strict_async_removes_allow_blocking(): | CODE |
| LOW | tests/test_cve_bench_loader.py | 20 | def test_win_conditions_match_upstream_readme() -> None: | CODE |
| LOW⚡ | tests/test_cve_bench_loader.py | 34 | def test_default_fixtures_present() -> None: | CODE |
| LOW⚡ | tests/test_cve_bench_loader.py | 39 | def test_load_all_default_variants() -> None: | CODE |
| LOW⚡ | tests/test_cve_bench_loader.py | 47 | def test_load_all_single_variant() -> None: | CODE |
| LOW⚡ | tests/test_cve_bench_loader.py | 53 | def test_load_one_zabbix_dual_host() -> None: | CODE |
| LOW | tests/test_cve_bench_loader.py | 64 | def test_load_one_single_host() -> None: | CODE |
| LOW | tests/test_cve_bench_loader.py | 70 | def test_challenge_id_is_stable() -> None: | CODE |
| LOW | tests/test_cve_bench_loader.py | 89 | def test_missing_required_key_raises(tmp_path: Path) -> None: | CODE |
| LOW | tests/test_cve_bench_loader.py | 96 | def test_missing_fixture_raises() -> None: | CODE |
| LOW | docs/library-usage.md | 159 | def create_decepticon_pro_agent(**kwargs): | CODE |
| LOW | docs/QUALITY_BAR.md | 327 | def test_kerberoast_skill_rejects_realm_outside_roe(): | CODE |
| LOW | docs/plugin-author-guide.md | 212 | def test_my_middleware_records_audit(): | CODE |
| LOW | …ages/decepticon-sdk/tests/test_compat_shim_identity.py | 16 | def test_schemas_identity_preservation() -> None: | CODE |
| LOW⚡ | …ages/decepticon-sdk/tests/test_compat_shim_identity.py | 28 | def test_llm_models_identity_preservation() -> None: | CODE |
| LOW⚡ | …ages/decepticon-sdk/tests/test_compat_shim_identity.py | 37 | def test_plugin_loader_identity_preservation() -> None: | CODE |
| LOW⚡ | …ages/decepticon-sdk/tests/test_compat_shim_identity.py | 46 | def test_research_graph_identity_preservation() -> None: | CODE |
| LOW⚡ | …ages/decepticon-sdk/tests/test_compat_shim_identity.py | 55 | def test_dunder_lookup_does_not_warn() -> None: | CODE |
| LOW | …ages/decepticon-sdk/tests/test_compat_shim_identity.py | 81 | def test_explicit_warning_on_legacy_attribute() -> None: | CODE |
| LOW | packages/decepticon-sdk/tests/test_sdk_api_stability.py | 60 | def test_sdk_public_name_importable(module_name: str, attr: str) -> None: | CODE |
| 3643 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .pre-commit-config.yaml | 90 | # ── Python ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .pre-commit-config.yaml | 100 | # ── Shell ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .pre-commit-config.yaml | 115 | # ── Dockerfiles ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | .pre-commit-config.yaml | 134 | # ── Typo checker ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | .pre-commit-config.yaml | 143 | # ── Secrets scan ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | pyproject.toml | 70 | # ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | pyproject.toml | 75 | # ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docker-compose.yml | 129 | # ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docker-compose.yml | 206 | # ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docker-compose.yml | 538 | # ── C2 Infrastructure (profile-based, default: c2-sliver) ─────────── | COMMENT |
| MEDIUM | docker-compose.yml | 566 | # ─── Optional: OpenTelemetry collector for self-hosted traces ────────── | COMMENT |
| MEDIUM | docker-compose.yml | 625 | # ── BloodHound Community Edition (BHCE) sidecar ──────────────────── | COMMENT |
| MEDIUM | benchmark/dreadgoad/reporter.py | 332 | # ── Per-agent grid summary ────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | benchmark/providers/exploitbench.py | 485 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | benchmark/providers/exploitbench.py | 487 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | benchmark/providers/exploitbench.py | 500 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | benchmark/providers/exploitbench.py | 502 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | benchmark/providers/exploitbench.py | 631 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | benchmark/providers/exploitbench.py | 633 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | benchmark/providers/exploitbench.py | 746 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | benchmark/providers/exploitbench.py | 748 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | benchmark/providers/exploitbench.py | 209 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | benchmark/providers/exploitbench.py | 211 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | benchmark/providers/exploitbench.py | 235 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | benchmark/providers/exploitbench.py | 237 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | benchmark/providers/exploitbench.py | 307 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | benchmark/providers/exploitbench.py | 309 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | benchmark/providers/exploitbench.py | 423 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | benchmark/providers/exploitbench.py | 425 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | benchmark/providers/exploitbench.py | 728 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | benchmark/providers/exploitbench.py | 730 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | benchmark/providers/mhbench.py | 20 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | benchmark/providers/mhbench.py | 22 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | benchmark/providers/mhbench.py | 273 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | benchmark/providers/mhbench.py | 275 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | benchmark/providers/mhbench.py | 678 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | benchmark/providers/mhbench.py | 680 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | benchmark/providers/mhbench.py | 1078 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | benchmark/providers/mhbench.py | 1080 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | clients/launcher/internal/starprompt/starprompt_test.go | 78 | // ── Stage 0: ack already present ──────────────────────────────────── | COMMENT |
| MEDIUM | clients/launcher/internal/starprompt/starprompt_test.go | 95 | // ── Stage 1: non-interactive ──────────────────────────────────────── | COMMENT |
| MEDIUM | clients/launcher/internal/starprompt/starprompt_test.go | 112 | // ── Stage 2a: gh present, already starred ─────────────────────────── | COMMENT |
| MEDIUM | clients/launcher/internal/starprompt/starprompt_test.go | 129 | // ── Stage 2b: gh present, not starred, user picks Yes ─────────────── | COMMENT |
| MEDIUM | clients/launcher/internal/starprompt/starprompt_test.go | 154 | // ── Stage 2c: gh present, not starred, user picks Skip ────────────── | COMMENT |
| MEDIUM | clients/launcher/internal/starprompt/starprompt_test.go | 176 | // ── Stage 2d: gh PUT fails → browser fallback + ack ───────────────── | COMMENT |
| MEDIUM | clients/launcher/internal/starprompt/starprompt_test.go | 202 | // ── Stage 2e: gh present, status unknown → browser ────────────────── | COMMENT |
| MEDIUM | clients/launcher/internal/starprompt/starprompt_test.go | 227 | // ── Stage 3: gh absent, user picks Yes → browser ──────────────────── | COMMENT |
| MEDIUM | clients/launcher/internal/starprompt/starprompt_test.go | 251 | // ── Stage 3b: gh absent, user picks Skip ──────────────────────────── | COMMENT |
| MEDIUM | clients/launcher/internal/starprompt/starprompt_test.go | 272 | // ── Stage 3c: browser open fails → URL hint, ack still written ────── | COMMENT |
| MEDIUM | clients/launcher/internal/starprompt/starprompt_test.go | 294 | // ── Prompt routing — title matches the path ───────────────────────── | COMMENT |
| MEDIUM | clients/launcher/internal/starprompt/starprompt_test.go | 313 | // ── starStatus enum sanity ────────────────────────────────────────── | COMMENT |
| MEDIUM | clients/launcher/internal/engagement/picker.go | 140 | // ─── Bubble Tea picker ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | clients/web/server/terminal-server.ts | 55 | // ── Session Pool ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | clients/web/server/terminal-server.ts | 96 | // ── Helpers ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | clients/web/server/terminal-server.ts | 133 | // ── Connection Handler ─────────────────────────────────────────── | COMMENT |
| MEDIUM | clients/web/server/terminal-server.ts | 282 | // ── Wire a WebSocket to a Session ──────────────────────────────── | COMMENT |
| MEDIUM | clients/web/server/terminal-server.ts | 332 | // ── Server lifecycle ───────────────────────────────────────────── | COMMENT |
| MEDIUM | …web/src/app/(dashboard)/engagements/[id]/plan/page.tsx | 20 | // ── Document metadata ────────────────────────────────────────────── | COMMENT |
| MEDIUM | …web/src/app/(dashboard)/engagements/[id]/plan/page.tsx | 29 | // ── Status helpers ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | …web/src/app/(dashboard)/engagements/[id]/plan/page.tsx | 47 | // ── Section component ────────────────────────────────────────────── | COMMENT |
| 850 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | benchmark/runner.py | 1 | CODE | |
| LOW | benchmark/harness.py | 1 | CODE | |
| LOW | benchmark/config.py | 1 | CODE | |
| LOW | benchmark/reporter.py | 1 | CODE | |
| LOW | benchmark/__init__.py | 1 | CODE | |
| LOW | benchmark/__init__.py | 3 | CODE | |
| LOW | benchmark/__init__.py | 4 | CODE | |
| LOW | benchmark/__init__.py | 4 | CODE | |
| LOW | benchmark/__init__.py | 4 | CODE | |
| LOW | benchmark/__init__.py | 4 | CODE | |
| LOW | benchmark/__init__.py | 4 | CODE | |
| LOW | benchmark/schemas.py | 1 | CODE | |
| LOW | benchmark/state.py | 1 | CODE | |
| LOW | benchmark/scorer.py | 1 | CODE | |
| LOW | benchmark/cve_bench/dry_run.py | 12 | CODE | |
| LOW | benchmark/cve_bench/runner.py | 9 | CODE | |
| LOW | benchmark/cve_bench/loader.py | 9 | CODE | |
| LOW | benchmark/cve_bench/scorer.py | 9 | CODE | |
| LOW | benchmark/dreadgoad/runner.py | 10 | CODE | |
| LOW | benchmark/dreadgoad/harness.py | 16 | CODE | |
| LOW | benchmark/dreadgoad/config.py | 16 | CODE | |
| LOW | benchmark/dreadgoad/reporter.py | 30 | CODE | |
| LOW | benchmark/dreadgoad/schemas.py | 9 | CODE | |
| LOW | benchmark/dreadgoad/__main__.py | 15 | CODE | |
| LOW | benchmark/dreadgoad/state.py | 9 | CODE | |
| LOW | benchmark/dreadgoad/providers/dreadgoad.py | 14 | CODE | |
| LOW | benchmark/dreadgoad/providers/base.py | 17 | CODE | |
| LOW | benchmark/dreadgoad/lab/dreadgoad_cli.py | 13 | CODE | |
| LOW | benchmark/providers/exploitbench.py | 54 | CODE | |
| LOW | benchmark/providers/exploitbench_capabilities.py | 35 | CODE | |
| LOW | benchmark/providers/__init__.py | 1 | CODE | |
| LOW | benchmark/providers/__init__.py | 3 | CODE | |
| LOW | benchmark/providers/__init__.py | 4 | CODE | |
| LOW | benchmark/providers/mhbench.py | 1 | CODE | |
| LOW | benchmark/providers/xbow.py | 1 | CODE | |
| LOW | benchmark/providers/buttercup.py | 34 | CODE | |
| LOW | benchmark/providers/base.py | 1 | CODE | |
| LOW | config/oauth_token_store.py | 26 | CODE | |
| LOW | config/auth_handler.py | 26 | CODE | |
| LOW | config/codex_chatgpt_handler.py | 23 | CODE | |
| LOW | config/perplexity_handler.py | 14 | CODE | |
| LOW | config/http_client.py | 26 | CODE | |
| LOW | config/litellm_startup.py | 11 | CODE | |
| LOW | config/grok_handler.py | 16 | CODE | |
| LOW | config/litellm_dynamic_config.py | 17 | CODE | |
| LOW | config/gemini_handler.py | 14 | CODE | |
| LOW | config/claude_code_handler.py | 24 | CODE | |
| LOW | config/copilot_handler.py | 44 | CODE | |
| LOW | config/ollama_probe.py | 14 | CODE | |
| LOW | tests/test_compose_network_isolation.py | 43 | CODE | |
| LOW | tests/test_cve_bench_scorer.py | 3 | CODE | |
| LOW | tests/test_compose_langgraph_command.py | 8 | CODE | |
| LOW | tests/test_cve_bench_loader.py | 3 | CODE | |
| LOW | scripts/next_version.py | 20 | CODE | |
| LOW | scripts/render_benchmark_charts.py | 7 | CODE | |
| LOW | scripts/check_basedpyright_errors.py | 14 | CODE | |
| LOW | packages/decepticon-sdk/decepticon_sdk/__init__.py | 25 | CODE | |
| LOW | packages/decepticon-sdk/decepticon_sdk/__init__.py | 37 | CODE | |
| LOW | packages/decepticon-sdk/decepticon_sdk/__init__.py | 37 | CODE | |
| LOW | packages/decepticon-sdk/decepticon_sdk/__init__.py | 37 | CODE | |
| 939 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | benchmark/harness.py | 156 | except Exception as exc: | CODE |
| LOW | benchmark/harness.py | 164 | except Exception as exc: | CODE |
| LOW | benchmark/harness.py | 206 | except Exception as exc: | CODE |
| LOW | benchmark/harness.py | 266 | except Exception as exc: | CODE |
| LOW | benchmark/harness.py | 334 | except Exception: | CODE |
| LOW | benchmark/harness.py | 397 | except Exception as exc: | CODE |
| LOW | benchmark/harness.py | 432 | except Exception: | CODE |
| LOW | benchmark/harness.py | 445 | except Exception: | CODE |
| LOW | benchmark/harness.py | 461 | except Exception: | CODE |
| LOW | benchmark/harness.py | 658 | except Exception as exc: | CODE |
| LOW | benchmark/harness.py | 790 | except Exception as exc: | CODE |
| LOW | benchmark/harness.py | 858 | except Exception as exc: | CODE |
| LOW | benchmark/harness.py | 879 | except Exception as exc: | CODE |
| LOW | benchmark/cve_bench/runner.py | 53 | except Exception as exc: # pragma: no cover — surfaced via Verdict.error | CODE |
| LOW | benchmark/dreadgoad/runner.py | 141 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW⚡ | benchmark/dreadgoad/harness.py | 428 | except Exception as cancel_exc: # noqa: BLE001 | CODE |
| LOW | benchmark/dreadgoad/harness.py | 460 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | benchmark/dreadgoad/__main__.py | 82 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | benchmark/providers/xbow.py | 192 | except Exception: | CODE |
| LOW | config/litellm_startup.py | 140 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | docs/QUALITY_BAR.md | 209 | except Exception: | CODE |
| LOW | docs/QUALITY_BAR.md | 221 | except Exception: | CODE |
| LOW | docs/design/opplan-middleware.md | 226 | except Exception as e: | CODE |
| LOW | scripts/install.sh | 165 | except Exception: | CODE |
| LOW | scripts/install.sh | 183 | except Exception: | CODE |
| LOW⚡ | …kages/decepticon-core/decepticon_core/plugin_loader.py | 392 | except Exception: # pragma: no cover — importlib quirks across versions | CODE |
| LOW⚡ | …kages/decepticon-core/decepticon_core/plugin_loader.py | 399 | except Exception: | CODE |
| LOW⚡ | …kages/decepticon-core/decepticon_core/plugin_loader.py | 408 | except Exception: | CODE |
| LOW⚡ | …kages/decepticon-core/decepticon_core/plugin_loader.py | 485 | except Exception: # pragma: no cover — importlib quirks | CODE |
| LOW⚡ | …kages/decepticon-core/decepticon_core/plugin_loader.py | 492 | except Exception: # noqa: BLE001 | CODE |
| LOW⚡ | …kages/decepticon-core/decepticon_core/plugin_loader.py | 502 | except Exception: # noqa: BLE001 | CODE |
| LOW⚡ | …kages/decepticon-core/decepticon_core/plugin_loader.py | 540 | except Exception: # pragma: no cover | CODE |
| LOW⚡ | …kages/decepticon-core/decepticon_core/plugin_loader.py | 547 | except Exception: # noqa: BLE001 | CODE |
| LOW⚡ | …kages/decepticon-core/decepticon_core/plugin_loader.py | 554 | except Exception: # noqa: BLE001 | CODE |
| LOW | …kages/decepticon-core/decepticon_core/plugin_loader.py | 122 | except Exception: | CODE |
| LOW | …kages/decepticon-core/decepticon_core/plugin_loader.py | 134 | except Exception: | CODE |
| LOW | …kages/decepticon-core/decepticon_core/plugin_loader.py | 575 | except Exception: # pragma: no cover | CODE |
| LOW | …kages/decepticon-core/decepticon_core/plugin_loader.py | 582 | except Exception: | CODE |
| LOW | …kages/decepticon-core/decepticon_core/plugin_loader.py | 607 | except Exception: | CODE |
| LOW | …kages/decepticon-core/decepticon_core/plugin_loader.py | 673 | except Exception: # pragma: no cover | CODE |
| LOW | …es/decepticon-core/decepticon_core/registry/plugins.py | 125 | except Exception: # pragma: no cover — importlib quirks | CODE |
| LOW | …ages/decepticon/decepticon/middleware/event_logging.py | 245 | except Exception: # noqa: BLE001 — never break the agent on a bad path | CODE |
| LOW | …ages/decepticon/decepticon/middleware/event_logging.py | 268 | except Exception: # noqa: BLE001 — logging must never break the run | CODE |
| LOW | …ages/decepticon/decepticon/middleware/event_logging.py | 358 | except Exception: # noqa: BLE001 — never break the run on a bad RoE file | CODE |
| LOW | …ages/decepticon/decepticon/middleware/event_logging.py | 407 | except Exception: # noqa: BLE001 — telemetry must never break the run | CODE |
| LOW | …ages/decepticon/decepticon/middleware/event_logging.py | 438 | except Exception: # noqa: BLE001 — telemetry must never break the run | CODE |
| LOW | …ticon/decepticon/middleware/prompt_injection_shield.py | 249 | except Exception: # noqa: BLE001 | CODE |
| LOW | …ticon/decepticon/middleware/prompt_injection_shield.py | 261 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | …ticon/decepticon/middleware/prompt_injection_shield.py | 339 | except Exception as e: # noqa: BLE001 - registry optional; fall back below | CODE |
| LOW | …ticon/decepticon/middleware/prompt_injection_shield.py | 350 | except Exception as e: # noqa: BLE001 - skillogy optional; fall back below | CODE |
| LOW | …icon/decepticon/middleware/opscontrol_notifications.py | 122 | except Exception as exc: # noqa: BLE001 — defensive | CODE |
| LOW | …s/decepticon/decepticon/middleware/_command_targets.py | 428 | except Exception: | CODE |
| LOW | packages/decepticon/decepticon/middleware/skillogy.py | 231 | except Exception as exc: # noqa: BLE001 — surface as ToolMessage payload | STRING |
| LOW | packages/decepticon/decepticon/middleware/skillogy.py | 273 | except Exception as exc: # noqa: BLE001 | STRING |
| LOW | packages/decepticon/decepticon/middleware/skillogy.py | 307 | except Exception as exc: # noqa: BLE001 | STRING |
| LOW | packages/decepticon/decepticon/middleware/skillogy.py | 393 | except Exception as exc: # noqa: BLE001 | STRING |
| LOW | packages/decepticon/decepticon/middleware/skillogy.py | 532 | except Exception as exc: # noqa: BLE001 | STRING |
| LOW | packages/decepticon/decepticon/middleware/budget.py | 130 | except Exception: # noqa: BLE001 | CODE |
| LOW | packages/decepticon/decepticon/middleware/budget.py | 144 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | packages/decepticon/decepticon/middleware/budget.py | 234 | except Exception as exc: # noqa: BLE001 | CODE |
| 218 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | clients/launcher/cmd/onboard.go | 279 | // Step 0: system check. | COMMENT |
| LOW⚡ | clients/launcher/cmd/onboard.go | 289 | // Step 1: Auth methods (multi-select) | COMMENT |
| LOW | clients/launcher/cmd/onboard.go | 769 | // Step 3: Model profile | COMMENT |
| LOW | clients/launcher/cmd/onboard.go | 782 | // Step 4: Language | COMMENT |
| LOW | docs/setup-guide.md | 763 | ### Step 1: Install the CLI | COMMENT |
| LOW | docs/setup-guide.md | 781 | ### Step 2: Run the Setup Wizard | COMMENT |
| LOW | docs/setup-guide.md | 800 | ### Step 3: Launch the Platform | COMMENT |
| LOW | docs/setup-guide.md | 816 | ### Step 4: Service Architecture | COMMENT |
| LOW | docs/setup-guide.md | 830 | ### Step 5: Create Your First Engagement | COMMENT |
| LOW | docs/setup-guide.md | 846 | ### Step 6: The Soundwave Interview | COMMENT |
| LOW | docs/setup-guide.md | 877 | ### Step 7: Autonomous Execution | COMMENT |
| LOW | docs/setup-guide.md | 898 | ### Step 8: Monitor in Real Time | COMMENT |
| LOW | docs/setup-guide.md | 912 | ### Step 9: Post-Engagement | COMMENT |
| LOW | packages/decepticon/decepticon/tools/research/patch.py | 210 | # Step 1: optional test suite. | COMMENT |
| LOW | packages/decepticon/decepticon/tools/research/patch.py | 229 | # Step 2: re-run the PoC. | COMMENT |
| LOW | packages/decepticon/decepticon/tools/research/patch.py | 241 | # Step 3: crash-vs-fix detection. | COMMENT |
| LOW⚡ | packages/decepticon/decepticon/tools/bash/bash.py | 232 | # Step 1: surrogate safety | COMMENT |
| LOW⚡ | packages/decepticon/decepticon/tools/bash/bash.py | 234 | # Step 2: strip ANSI | COMMENT |
| LOW⚡ | packages/decepticon/decepticon/tools/bash/bash.py | 236 | # Step 3: compress repetition | COMMENT |
| LOW | …ges/decepticon/decepticon/skills/shared/opsec/SKILL.md | 77 | # Step 1: Get a current, real User-Agent from your own browser or a live source | COMMENT |
| LOW | …ges/decepticon/decepticon/skills/shared/opsec/SKILL.md | 81 | # Step 2: Build a rotation list with CURRENT versions | COMMENT |
| LOW | …n/decepticon/skills/standard/exploit/web/sqli/SKILL.md | 185 | # Step 1: try common trivial passwords in-process (covers ~60% of CTF hashes) | COMMENT |
| LOW⚡ | …n/decepticon/skills/standard/exploit/web/sqli/SKILL.md | 196 | # Step 2: wordlist crack with hashcat (if installed) | COMMENT |
| LOW⚡ | …n/decepticon/skills/standard/exploit/web/sqli/SKILL.md | 200 | # Step 3: john fallback | COMMENT |
| LOW⚡ | …n/decepticon/skills/standard/exploit/web/sqli/SKILL.md | 205 | # Step 4: application-context variants (username, app name as base) | COMMENT |
| LOW | …n/decepticon/skills/standard/exploit/web/sqli/SKILL.md | 219 | # Step 1: probe string length first (binary search) | COMMENT |
| LOW | …n/decepticon/skills/standard/exploit/web/sqli/SKILL.md | 231 | # Step 2: parallel character extraction (10-20 concurrent jobs) | COMMENT |
| LOW | …n/decepticon/skills/standard/exploit/web/sqli/SKILL.md | 251 | # Step 3: reconstruct string from per-position files | COMMENT |
| LOW⚡ | …n/skills/standard/exploit/web/mass-assignment/SKILL.md | 99 | # Step 1: Register normal account | COMMENT |
| LOW⚡ | …n/skills/standard/exploit/web/mass-assignment/SKILL.md | 107 | # Step 2: Login + check | COMMENT |
| LOW⚡ | …n/skills/standard/exploit/web/mass-assignment/SKILL.md | 113 | # Step 3: Use admin powers | COMMENT |
| LOW | …n/decepticon/skills/standard/exploit/web/bfla/SKILL.md | 80 | ### Step 1: Baseline with Admin Token | COMMENT |
| LOW | …n/decepticon/skills/standard/exploit/web/bfla/SKILL.md | 91 | ### Step 2: Replay with Lower-Privilege Token | COMMENT |
| LOW | …n/decepticon/skills/standard/exploit/web/bfla/SKILL.md | 106 | ### Step 3: Method Alternation | COMMENT |
| LOW | …n/decepticon/skills/standard/exploit/web/bfla/SKILL.md | 123 | ### Step 4: Transport / Encoding Alternation | COMMENT |
| LOW | …n/decepticon/skills/standard/exploit/web/bfla/SKILL.md | 135 | ### Step 5: GraphQL Mutations | COMMENT |
| LOW | …n/decepticon/skills/standard/exploit/web/bfla/SKILL.md | 153 | ### Step 6: Background Jobs and Webhooks | COMMENT |
| LOW | …n/decepticon/skills/standard/exploit/web/bfla/SKILL.md | 168 | ### Step 7: Header Trust Bypass | COMMENT |
| LOW | …n/skills/standard/exploit/web/cache-deception/SKILL.md | 31 | # Step 1: visit authenticated page w/ a fake .css path | COMMENT |
| LOW | …n/skills/standard/exploit/web/cache-deception/SKILL.md | 39 | # Step 2: from unauth session | COMMENT |
| LOW | …n/decepticon/skills/standard/exploit/web/ssti/SKILL.md | 212 | # Step 1: exfiltrate target file to /tmp/out via RCE (replace /.env with discovered path) | COMMENT |
| LOW | …n/decepticon/skills/standard/exploit/web/ssti/SKILL.md | 214 | # Step 2: read via LFI or a file-serving endpoint if available | COMMENT |
| LOW | …n/decepticon/skills/standard/exploit/web/ssti/SKILL.md | 234 | # Step 1: enumerate all subclasses (save to file — output can be large) | COMMENT |
| LOW | …n/decepticon/skills/standard/exploit/web/ssti/SKILL.md | 248 | # Step 2: use the index to call Popen (common indices: 200-280 in py3.10+, 132-200 in py3.8) | COMMENT |
| LOW | …epticon/skills/standard/exploit/web/smuggling/SKILL.md | 433 | # Step 1: smuggle an inner GET /admin_panel with a Cache-Control hint | COMMENT |
| LOW | …epticon/skills/standard/exploit/web/smuggling/SKILL.md | 434 | # Step 2: from a different connection, GET / (or the public path the cache keys on) | COMMENT |
| LOW | …/skills/standard/exploit/web/header-injection/SKILL.md | 111 | # Step 1: Poison the cache with a malicious host | COMMENT |
| LOW | …/skills/standard/exploit/web/header-injection/SKILL.md | 115 | # Step 2: Verify the cached response serves the poisoned content to a clean client | COMMENT |
| LOW⚡ | …lls/standard/exploit/edge-device-exploitation/SKILL.md | 84 | # Step 1: Verify web UI is accessible | COMMENT |
| LOW⚡ | …lls/standard/exploit/edge-device-exploitation/SKILL.md | 87 | # Step 2: Create implant account (the exploit request) | COMMENT |
| LOW⚡ | …lls/standard/exploit/edge-device-exploitation/SKILL.md | 92 | # Step 3: Access via SSH with implant account | COMMENT |
| LOW⚡ | …lls/standard/exploit/edge-device-exploitation/SKILL.md | 95 | # Step 4: Check for existing implant (IOC detection) | COMMENT |
| LOW⚡ | …lls/standard/exploit/edge-device-exploitation/SKILL.md | 106 | # Step 1: Auth bypass (CVE-2023-46805) — path traversal | COMMENT |
| LOW⚡ | …lls/standard/exploit/edge-device-exploitation/SKILL.md | 110 | # Step 2: Command injection via REST API | COMMENT |
| LOW⚡ | …lls/standard/exploit/edge-device-exploitation/SKILL.md | 115 | # Step 3: Read output | COMMENT |
| LOW⚡ | …lls/standard/exploit/edge-device-exploitation/SKILL.md | 128 | # Step 1: Confirm GlobalProtect is exposed | COMMENT |
| LOW⚡ | …lls/standard/exploit/edge-device-exploitation/SKILL.md | 131 | # Step 2: Exploit — inject via SESSID cookie | COMMENT |
| LOW⚡ | …lls/standard/exploit/edge-device-exploitation/SKILL.md | 136 | # Step 3: Retrieve command output | COMMENT |
| LOW⚡ | …lls/standard/exploit/edge-device-exploitation/SKILL.md | 139 | # Step 4: Reverse shell | COMMENT |
| LOW | …lls/standard/exploit/edge-device-exploitation/SKILL.md | 150 | # Step 1: Confirm FortiManager FGFM service (port 541) | COMMENT |
| 84 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .pre-commit-config.yaml | 1 | # Pre-commit hooks — install with: uvx pre-commit install | COMMENT |
| LOW | .pre-commit-config.yaml | 21 | # noisier "auto-fix everything" hooks. These hooks still apply to new | COMMENT |
| LOW | docker-compose.dev.yml | 1 | # Docker Compose override for development workflows. | COMMENT |
| LOW | docker-compose.dev.yml | 21 | # `docker-compose.override.yml` into `~/.decepticon/`. | COMMENT |
| LOW | docker-compose.watch.yml | 1 | # docker-compose.watch.yml — hot-reload overrides for development | COMMENT |
| LOW | docker-compose.yml | 121 | mem_limit: 2g | COMMENT |
| LOW | docker-compose.yml | 141 | # pivot path: a prompt-injection-driven Cypher payload can issue | COMMENT |
| LOW | docker-compose.yml | 181 | retries: 12 | COMMENT |
| LOW | docker-compose.yml | 201 | context: . | COMMENT |
| LOW | docker-compose.yml | 261 | # the whole tree under <home>/workspace. | COMMENT |
| LOW | docker-compose.yml | 281 | logging: *default-logging | COMMENT |
| LOW | docker-compose.yml | 381 | - SANDBOX_URL=http://sandbox:9999 | COMMENT |
| LOW | docker-compose.yml | 561 | restart: unless-stopped | COMMENT |
| LOW | docker-compose.yml | 621 | - decepticon-net | COMMENT |
| LOW | .typos.toml | 21 | # is correct (mis-fire, mis-split, mis-configure, mis-allocation). | COMMENT |
| LOW | benchmark/config.py | 41 | # ``exploitbench_bridge_runtime`` selects the stdio→TCP bridge binary | COMMENT |
| LOW | benchmark/schemas.py | 81 | duration_seconds: float = 0.0 | COMMENT |
| LOW | benchmark/schemas.py | 101 | # field for rows whose startTime falls inside this run's agent | COMMENT |
| LOW | benchmark/dreadgoad/harness.py | 41 | # ``DECEPTICON_SANDBOX_CONTAINER`` when running outside the standard stack. | COMMENT |
| LOW | benchmark/dreadgoad/schemas.py | 21 | rounds: int | COMMENT |
| LOW | benchmark/dreadgoad/configs/apt-shared-lab-grid.yaml | 1 | name: apt-shared-lab-grid | COMMENT |
| LOW | benchmark/providers/mhbench.py | 21 | # Topology metadata model | COMMENT |
| LOW | benchmark/providers/mhbench.py | 101 | # e.g. Chain2Hosts ``host_1`` > ``host_0`` | COMMENT |
| LOW | benchmark/providers/mhbench.py | 1221 | if matches: | COMMENT |
| LOW | benchmark/configs/exploitbench-smoke.yaml | 1 | # Decepticon ExploitBench adapter — one-bug smoke. | COMMENT |
| LOW | benchmark/configs/exploitbench-v8-small.yaml | 1 | # Decepticon ExploitBench adapter — 14-bug baseline cohort. | COMMENT |
| LOW | clients/launcher/cmd/onboard.go | 81 | defaultAzureAPIVersion = "2024-08-01-preview" | COMMENT |
| LOW | clients/launcher/cmd/start.go | 41 | // Indirected so tests can assert which AUTO_UPDATE branch ran | COMMENT |
| LOW | clients/launcher/cmd/start.go | 221 | codexAuthPath := filepath.Join(userHome, ".codex", "auth.json") | COMMENT |
| LOW | clients/launcher/cmd/start.go | 241 | // behaviour Discord/Slack/electron-updater apps already use. | COMMENT |
| LOW | clients/launcher/cmd/start.go | 321 | COMMENT | |
| LOW | clients/launcher/cmd/start.go | 381 | // candidateProbeURLs returns the URLs the launcher should probe to | COMMENT |
| LOW | clients/launcher/cmd/remove.go | 141 | for _, rc := range rcFiles { | COMMENT |
| LOW | clients/launcher/cmd/opscontrol/opscontrol.go | 1 | // Package opscontrol exposes the `decepticon opscontrol` Cobra | COMMENT |
| LOW | clients/launcher/cmd/opscontrol/supervisor.go | 21 | // it embedded in the launcher binary collapses the previous | COMMENT |
| LOW | clients/launcher/cmd/opscontrol/supervisor.go | 41 | COMMENT | |
| LOW | clients/launcher/cmd/opscontrol/supervisor.go | 61 | // daemon lifecycle is owned by the init system — survives | COMMENT |
| LOW | clients/launcher/cmd/opscontrol/daemon.go | 41 | backend := internal.NewDockerComposeBackend() | COMMENT |
| LOW | clients/launcher/cmd/opscontrol/install.go | 81 | // systemd's `enable --now` returns as soon as the unit transitions | COMMENT |
| LOW | clients/launcher/internal/starprompt/starprompt.go | 1 | // Package starprompt presents a one-time GitHub star ask at the natural | COMMENT |
| LOW | clients/launcher/internal/opscontrol/paths.go | 61 | // $DECEPTICON_HOME so rootless / WSL2 / Mac users do not need write | COMMENT |
| LOW | clients/launcher/internal/opscontrol/paths.go | 101 | } | COMMENT |
| LOW | clients/launcher/internal/opscontrol/paths.go | 121 | // up its own decepticon-* containers). | COMMENT |
| LOW | clients/launcher/internal/opscontrol/paths.go | 141 | } | COMMENT |
| LOW | clients/launcher/internal/opscontrol/paths.go | 181 | // silently bleed into every up/stop/config call -- if it does, | COMMENT |
| LOW | clients/launcher/internal/opscontrol/backend.go | 41 | // workloads. ADR-0006 §5' lists DockerComposeBackend, KubernetesBackend, | COMMENT |
| LOW | clients/launcher/internal/opscontrol/server.go | 201 | workload := r.PathValue("workload") | COMMENT |
| LOW | clients/launcher/internal/opscontrol/service.go | 1 | package opscontrol | COMMENT |
| LOW | clients/launcher/internal/opscontrol/service.go | 21 | // systemd, Linux without per-user systemd) | COMMENT |
| LOW | clients/launcher/internal/opscontrol/service.go | 61 | } | COMMENT |
| LOW | clients/launcher/internal/opscontrol/systemd.go | 21 | UnitName string // e.g. "decepticon-opscontrol" or "decepticon-opscontrol-stack2" | COMMENT |
| LOW | clients/launcher/internal/opscontrol/systemd.go | 241 | // | COMMENT |
| LOW | clients/launcher/internal/opscontrol/systemd.go | 261 | // when enabled. Socket activation is a future-Sprint reduction. | COMMENT |
| LOW | …launcher/internal/opscontrol/docker_compose_backend.go | 61 | return args | COMMENT |
| LOW | …launcher/internal/opscontrol/docker_compose_backend.go | 101 | // containers accumulate across an engagement and the operator has to | COMMENT |
| LOW | …launcher/internal/opscontrol/docker_compose_backend.go | 141 | // stop/start cycle. | COMMENT |
| LOW | clients/launcher/internal/config/config.go | 301 | // | COMMENT |
| LOW | clients/launcher/internal/config/config.go | 361 | }, | COMMENT |
| LOW | clients/launcher/internal/config/config.go | 501 | } | COMMENT |
| LOW | clients/launcher/internal/config/config.go | 621 | defer f.Close() | COMMENT |
| 128 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pyproject.toml | 115 | # config handlers, benchmark harness, and clients legitimately depend | COMMENT |
| MEDIUM | docker-compose.dev.yml | 7 | # benchmark harness pick it up via the COMPOSE_DEV/COMPOSE_WATCH vars. | COMMENT |
| MEDIUM | docker-compose.yml | 260 | # play (raw `make dev`, benchmark harness, dev workflows), the fallback is | COMMENT |
| MEDIUM | benchmark/harness.py | 270 | # the harness escalates to a full langgraph container restart | COMMENT |
| MEDIUM | benchmark/harness.py | 778 | # Honor LANGSMITH_PROJECT from host env so the harness and | COMMENT |
| MEDIUM | benchmark/harness.py | 842 | # Heartbeat every 30s so harness logs show progress even | COMMENT |
| MEDIUM | benchmark/harness.py | 844 | # are otherwise invisible from the harness layer. | COMMENT |
| MEDIUM | benchmark/schemas.py | 11 | "clean", # run reached terminal status without harness-side cancel | CODE |
| MEDIUM | benchmark/schemas.py | 45 | # 1-result invariant in the existing harness. | COMMENT |
| MEDIUM | benchmark/schemas.py | 91 | # was actually halted before teardown fired. Populated by the harness | COMMENT |
| MEDIUM | benchmark/dreadgoad/harness.py | 45 | # LiteLLM proxy admin endpoints for offline cost attribution. The harness | COMMENT |
| MEDIUM⚡ | benchmark/dreadgoad/harness.py | 413 | # asyncio.TimeoutError closes only the harness-local stream | COMMENT |
| MEDIUM⚡ | benchmark/dreadgoad/harness.py | 418 | # harness gives up. | COMMENT |
| MEDIUM | benchmark/dreadgoad/schemas.py | 25 | # LangGraph ``assistant_id`` values the harness will invoke. Each | COMMENT |
| MEDIUM | benchmark/dreadgoad/providers/dreadgoad.py | 54 | operator_message="", # populated by harness after provision | CODE |
| MEDIUM⚡ | benchmark/providers/exploitbench.py | 496 | # harness's standard workspace cleanup; we don't double-delete | COMMENT |
| MEDIUM | benchmark/providers/exploitbench.py | 91 | # allocation walks the range; the harness restarts the sandbox between | COMMENT |
| MEDIUM | benchmark/providers/exploitbench.py | 103 | # The harness reads this file at episode end to recover the canonical | COMMENT |
| MEDIUM | benchmark/providers/mhbench.py | 315 | # harness indefinitely. | COMMENT |
| MEDIUM | benchmark/providers/mhbench.py | 633 | _ = workspace # harness already scans workspace into state.step_history | CODE |
| MEDIUM | benchmark/results/XBEN-079-24/report.json | 14 | "agent_summary": "I'll start by loading the benchmark skill to understand the mode-specific workflow.\n\nBenchmark mod | CODE |
| MEDIUM | benchmark/results/XBEN-079-24/evidence/summary.json | 14 | "agent_summary": "I'll start by loading the benchmark skill to understand the mode-specific workflow.\n\nBenchmark mod | CODE |
| MEDIUM | benchmark/configs/exploitbench-v8-small.yaml | 5 | # the Decepticon harness consumes: env IDs, GHCR image tags, MCP | COMMENT |
| MEDIUM | packages/decepticon/pyproject.toml | 197 | # XBOW/CTF eval-harness conventions — kept in-repo for `make benchmark` but | COMMENT |
| MEDIUM | packages/decepticon/decepticon/middleware/engagement.py | 60 | # All launcher-/harness-set channels below carry a reducer so an | COMMENT |
| MEDIUM | packages/decepticon/decepticon/middleware/engagement.py | 68 | # Benchmark / CTF challenge context — populated by the benchmark harness. | COMMENT |
| MEDIUM | packages/decepticon/decepticon/tools/research/fuzz.py | 159 | # Atheris harness for {target}.{entry} | COMMENT |
| MEDIUM | packages/decepticon/decepticon/tools/research/fuzz.py | 219 | # boofuzz harness for {target} ({entry} protocol) | COMMENT |
| MEDIUM | packages/decepticon/decepticon/tools/research/fuzz.py | 242 | Engine.AFLPP: _LIBFUZZER_TEMPLATE, # same harness, different driver | STRING |
| MEDIUM | …s/decepticon/decepticon/tools/network/vulnerability.py | 403 | """Perform comprehensive vulnerability assessment. | STRING |
| LOW | …s/decepticon/decepticon/tools/network/vulnerability.py | 533 | # For now, just add a placeholder check | COMMENT |
| MEDIUM | packages/decepticon/tests/unit/test_wheel_contents.py | 13 | # skill trees as package data while excluding the benchmark eval-harness | COMMENT |
| MEDIUM | …s/decepticon/tests/unit/benchmark/test_harness_cost.py | 60 | # patch httpx.AsyncClient inside benchmark.harness module | COMMENT |
| MEDIUM | …es/decepticon/tests/unit/middleware/test_engagement.py | 148 | # Every launcher-/harness-set EngagementContextState channel must survive a | COMMENT |
| MEDIUM⚡ | packages/decepticon/tests/unit/tools/web/test_search.py | 40 | # --- JSON extraction (robust to parent-import log noise) --------------------- | COMMENT |
| MEDIUM⚡ | …cepticon/tests/unit/sandbox_kernel/test_orphan_reap.py | 61 | # so the test is robust to slug-generation changes. | COMMENT |
| MEDIUM | .github/workflows/security.yml | 4 | # the 18-tool "comprehensive" arsenal with a focused, high-signal set whose | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | benchmark/harness.py | 409 | CODE | |
| LOW | benchmark/harness.py | 696 | CODE | |
| LOW | benchmark/harness.py | 882 | CODE | |
| LOW | benchmark/dreadgoad/harness.py | 333 | CODE | |
| LOW | benchmark/providers/mhbench.py | 184 | CODE | |
| LOW | benchmark/providers/xbow.py | 107 | CODE | |
| LOW | benchmark/providers/buttercup.py | 203 | CODE | |
| LOW | config/codex_chatgpt_handler.py | 196 | CODE | |
| LOW | config/codex_chatgpt_handler.py | 214 | CODE | |
| LOW | config/codex_chatgpt_handler.py | 350 | CODE | |
| LOW | config/codex_chatgpt_handler.py | 473 | CODE | |
| LOW | config/litellm_dynamic_config.py | 519 | CODE | |
| LOW | config/gemini_handler.py | 154 | CODE | |
| LOW | config/claude_code_handler.py | 187 | CODE | |
| LOW | config/claude_code_handler.py | 365 | CODE | |
| LOW | config/claude_code_handler.py | 402 | CODE | |
| LOW | tests/test_compose_network_isolation.py | 150 | CODE | |
| LOW | tests/test_compose_network_isolation.py | 227 | CODE | |
| LOW | …kages/decepticon-core/decepticon_core/plugin_loader.py | 100 | CODE | |
| LOW | …kages/decepticon-core/decepticon_core/plugin_loader.py | 387 | CODE | |
| LOW | …kages/decepticon-core/decepticon_core/plugin_loader.py | 570 | CODE | |
| LOW | …es/decepticon-core/decepticon_core/registry/plugins.py | 111 | CODE | |
| LOW | …ages/decepticon/decepticon/middleware/event_logging.py | 130 | CODE | |
| LOW | …ticon/decepticon/middleware/prompt_injection_shield.py | 226 | CODE | |
| LOW | …ckages/decepticon/decepticon/middleware/_audit_sink.py | 167 | CODE | |
| LOW | …ckages/decepticon/decepticon/middleware/_audit_sink.py | 104 | CODE | |
| LOW | …ckages/decepticon/decepticon/middleware/_audit_sink.py | 128 | CODE | |
| LOW | packages/decepticon/decepticon/middleware/opplan.py | 194 | CODE | |
| LOW | packages/decepticon/decepticon/middleware/roe.py | 205 | CODE | |
| LOW | …s/decepticon/decepticon/middleware/untrusted_output.py | 302 | CODE | |
| LOW | …/decepticon/decepticon/middleware/kg_internal/store.py | 107 | CODE | |
| LOW | …decepticon/decepticon/middleware/kg_internal/ingest.py | 129 | CODE | |
| LOW | …decepticon/decepticon/middleware/kg_internal/ingest.py | 470 | CODE | |
| LOW | packages/decepticon/decepticon/blue_cell/rule_match.py | 104 | CODE | |
| LOW | packages/decepticon/decepticon/blue_cell/rule_match.py | 163 | CODE | |
| LOW | packages/decepticon/decepticon/blue_cell/tap.py | 179 | CODE | |
| LOW | packages/decepticon/decepticon/tools/opplan.py | 349 | CODE | |
| LOW | packages/decepticon/decepticon/tools/opplan.py | 622 | CODE | |
| LOW | packages/decepticon/decepticon/tools/opplan.py | 988 | CODE | |
| LOW | packages/decepticon/decepticon/tools/research/osint.py | 341 | CODE | |
| LOW | packages/decepticon/decepticon/tools/research/chain.py | 316 | CODE | |
| LOW | packages/decepticon/decepticon/tools/research/tools.py | 398 | CODE | |
| LOW | packages/decepticon/decepticon/tools/research/tools.py | 558 | CODE | |
| LOW | packages/decepticon/decepticon/tools/research/tools.py | 725 | CODE | |
| LOW | packages/decepticon/decepticon/tools/research/tools.py | 822 | CODE | |
| LOW | packages/decepticon/decepticon/tools/research/tools.py | 1884 | CODE | |
| LOW | packages/decepticon/decepticon/tools/research/tools.py | 2024 | CODE | |
| LOW | packages/decepticon/decepticon/tools/research/tools.py | 2174 | CODE | |
| LOW | …decepticon/decepticon/tools/research/secret_scanner.py | 202 | CODE | |
| LOW | …/decepticon/decepticon/tools/research/scanner_tools.py | 424 | CODE | |
| LOW | packages/decepticon/decepticon/tools/research/sarif.py | 136 | CODE | |
| LOW | packages/decepticon/decepticon/tools/research/bounty.py | 65 | CODE | |
| LOW | packages/decepticon/decepticon/tools/ad/gpo.py | 46 | CODE | |
| LOW | packages/decepticon/decepticon/tools/ad/bh_tools.py | 140 | CODE | |
| LOW | packages/decepticon/decepticon/tools/ad/bloodhound.py | 1136 | CODE | |
| LOW | packages/decepticon/decepticon/tools/ad/kerberos.py | 57 | CODE | |
| LOW | packages/decepticon/decepticon/tools/evidence/tools.py | 136 | CODE | |
| LOW | packages/decepticon/decepticon/tools/evidence/tools.py | 193 | CODE | |
| LOW | …ckages/decepticon/decepticon/tools/references/fetch.py | 79 | CODE | |
| LOW | …ckages/decepticon/decepticon/tools/references/fetch.py | 172 | CODE | |
| 53 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | benchmark/__init__.py | 12 | __all__ = [ | CODE |
| LOW | benchmark/providers/__init__.py | 6 | __all__ = ["BaseBenchmarkProvider", "ButtercupProvider"] | CODE |
| LOW | benchmark/providers/mhbench.py | 1334 | __all__ = [ | STRING |
| LOW | config/oauth_token_store.py | 347 | __all__ = [ | CODE |
| LOW | config/auth_handler.py | 104 | __all__ = [ | CODE |
| LOW | config/litellm_dynamic_config.py | 1014 | __all__ = [ | CODE |
| LOW | config/ollama_probe.py | 438 | __all__ = [ | CODE |
| LOW | packages/decepticon-sdk/decepticon_sdk/__init__.py | 82 | __all__ = [ | CODE |
| LOW | …ages/decepticon-sdk/decepticon_sdk/testing/__init__.py | 114 | __all__ = ["FakeBackend", "FakeLLM", "FakeSandbox"] | CODE |
| LOW | …ges/decepticon-sdk/decepticon_sdk/scaffold/__init__.py | 21 | __all__ = ["app"] | CODE |
| LOW | …es/decepticon-sdk/decepticon_sdk/scaffold/templates.py | 250 | __all__ = ["TEMPLATES", "ScaffoldTemplate", "pyproject_for"] | STRING |
| LOW | …kages/decepticon-core/decepticon_core/plugin_loader.py | 48 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/decepticon-core/decepticon_core/__init__.py | 35 | __all__ = [ | CODE |
| LOW | …ages/decepticon-core/decepticon_core/types/__init__.py | 29 | __all__ = ["engagement", "llm", "kg", "roe"] | CODE |
| LOW | …ges/decepticon-core/decepticon_core/contracts/slots.py | 243 | __all__ = [ | CODE |
| LOW | …/decepticon-core/decepticon_core/contracts/__init__.py | 27 | __all__ = [ | CODE |
| LOW | …pticon-core/decepticon_core/contracts/contributions.py | 147 | __all__ = [ | CODE |
| LOW | …ages/decepticon-core/decepticon_core/utils/__init__.py | 12 | __all__ = ["config", "logging"] | CODE |
| LOW | …es/decepticon-core/decepticon_core/registry/plugins.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | …es/decepticon-core/decepticon_core/registry/plugins.py | 183 | def set_role_resolution(cls, role: str, resolution: RoleResolution) -> None: | CODE |
| LOW | …s/decepticon-core/decepticon_core/registry/__init__.py | 43 | __all__ = [ | CODE |
| LOW | …/decepticon-core/decepticon_core/protocols/__init__.py | 33 | __all__ = [ | CODE |
| LOW | packages/decepticon/decepticon/_boot.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/decepticon/decepticon/_boot.py | 161 | __all__ = ["run"] | CODE |
| LOW | packages/decepticon/decepticon/middleware/egress.py | 129 | __all__ = [ | CODE |
| LOW | packages/decepticon/decepticon/middleware/skills.py | 236 | __all__ = ["SkillsMiddleware"] | CODE |
| LOW | …ges/decepticon/decepticon/middleware/model_override.py | 204 | __all__ = ["ModelOverrideMiddleware"] | CODE |
| LOW | …decepticon/decepticon/middleware/proxy_key_override.py | 172 | __all__ = ["ProxyKeyOverrideMiddleware"] | CODE |
| LOW | packages/decepticon/decepticon/middleware/__init__.py | 33 | __all__ = [ | CODE |
| LOW | packages/decepticon/decepticon/middleware/kg.py | 277 | __all__ = ["KGMiddleware", "KG_SYSTEM_PROMPT"] | CODE |
| LOW | packages/decepticon/decepticon/blue_cell/__init__.py | 36 | __all__ = [ | CODE |
| LOW | packages/decepticon/decepticon/tools/skills.py | 296 | __all__ = ["build_load_skill_tool"] | CODE |
| LOW | packages/decepticon/decepticon/tools/opplan.py | 1181 | __all__ = [ | CODE |
| LOW | packages/decepticon/decepticon/tools/filesystem.py | 20 | __all__ = ["filesystem_tools_without_execute"] | CODE |
| LOW | packages/decepticon/decepticon/tools/__init__.py | 21 | __all__ = [ | CODE |
| LOW | packages/decepticon/decepticon/tools/skills_registry.py | 238 | __all__ = [ | CODE |
| LOW | …kages/decepticon/decepticon/tools/research/__init__.py | 30 | __all__ = [ | CODE |
| LOW | …epticon/decepticon/tools/research/_engagement_scope.py | 20 | __all__ = [ | CODE |
| LOW | packages/decepticon/decepticon/tools/reporting/cvss.py | 258 | __all__ = [ | CODE |
| LOW | …ages/decepticon/decepticon/tools/reporting/__init__.py | 28 | __all__ = [ | CODE |
| LOW | packages/decepticon/decepticon/tools/ad/__init__.py | 28 | __all__ = [ | CODE |
| LOW | packages/decepticon/decepticon/tools/proxy/tools.py | 278 | __all__ = [ | CODE |
| LOW | packages/decepticon/decepticon/tools/proxy/__init__.py | 29 | __all__ = [ | CODE |
| LOW | …kages/decepticon/decepticon/tools/evidence/__init__.py | 19 | __all__ = ["EVIDENCE_TOOLS"] | CODE |
| LOW | …epticon/decepticon/tools/references/payloads_ingest.py | 279 | __all__ = [ | CODE |
| LOW | …es/decepticon/decepticon/tools/references/h1_corpus.py | 324 | __all__ = [ | CODE |
| LOW | …ages/decepticon/decepticon/tools/references/hydrate.py | 142 | __all__ = [ | CODE |
| LOW | …ges/decepticon/decepticon/tools/references/__init__.py | 39 | __all__ = [ | CODE |
| LOW | …es/decepticon/decepticon/tools/references/killchain.py | 322 | __all__ = [ | CODE |
| LOW | …ecepticon/decepticon/tools/references/cve_poc_index.py | 313 | __all__ = [ | CODE |
| LOW | …es/decepticon/decepticon/tools/references/oneliners.py | 198 | __all__ = ["REPO_SLUG", "Recipe", "load_recipes", "search"] | CODE |
| LOW | …/decepticon/decepticon/tools/references/methodology.py | 189 | __all__ = [ | CODE |
| LOW | packages/decepticon/decepticon/tools/web/graphql.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/decepticon/decepticon/tools/web/__init__.py | 25 | __all__ = [ | CODE |
| LOW | …ages/decepticon/decepticon/tools/contracts/__init__.py | 31 | __all__ = [ | CODE |
| LOW | …ckages/decepticon/decepticon/tools/network/__init__.py | 40 | __all__ = [ | CODE |
| LOW | packages/decepticon/decepticon/tools/mcp/__init__.py | 21 | __all__ = [ | CODE |
| LOW | packages/decepticon/decepticon/tools/bash/__init__.py | 11 | __all__ = [ | CODE |
| LOW | …ages/decepticon/decepticon/tools/reversing/__init__.py | 36 | __all__ = [ | CODE |
| LOW | packages/decepticon/decepticon/tools/browser/tools.py | 378 | __all__ = [ | CODE |
| 38 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | benchmark/harness.py | 350 | "pkill -9 -f python3 2>/dev/null || true; " | CODE |
| HIGH⚡ | benchmark/harness.py | 351 | "pkill -9 -f curl 2>/dev/null || true; " | CODE |
| HIGH⚡ | benchmark/harness.py | 352 | "tmux kill-server 2>/dev/null || true; " | CODE |
| HIGH⚡ | benchmark/harness.py | 353 | "tmux new-session -d -s main 2>/dev/null || true", | CODE |
| HIGH | benchmark/dreadgoad/reporter.py | 258 | f"cd /workspace && tar czf {sandbox_tar} {scenario_name}/", | CODE |
| HIGH | benchmark/providers/exploitbench.py | 179 | 4. ``teardown`` — ``docker stop && docker rm`` plus bridge cleanup. | STRING |
| HIGH | tests/test_compose_network_isolation.py | 137 | (``{a: null, b: {aliases: ...}}``). Both shapes mean | STRING |
| HIGH | packages/decepticon/decepticon/tools/research/patch.py | 172 | ``"cd /workspace/target && pytest -q tests/security/"``). | STRING |
| HIGH | packages/decepticon/decepticon/tools/research/patch.py | 177 | ``poc_still_fires`` (bool), ``tests_passed`` (bool or null), | STRING |
| HIGH | packages/decepticon/decepticon/tools/research/fuzz.py | 193 | // Create with: cargo fuzz init && cargo fuzz add {entry} | COMMENT |
| HIGH | packages/decepticon/decepticon/tools/ad/bhce_client.py | 16 | OperationKey = HMAC_SHA256(token_secret, METHOD || URI_PATH) | STRING |
| HIGH | packages/decepticon/decepticon/tools/bash/bash.py | 371 | "-delete 2>/dev/null || true", | CODE |
| HIGH | packages/decepticon/decepticon/tools/bash/prompt.py | 277 | | Prefer inline `python3 -c` over `cat > script.py && python3 script.py` | Inline keeps the harness in the tool transcri | CODE |
| HIGH⚡ | …cepticon/tests/unit/middleware/test_command_targets.py | 167 | targets = extract_targets("curl https://api.target.com/v1 && nmap 10.0.0.0/24") | CODE |
| HIGH⚡ | …s/unit/middleware/test_command_targets_scope_bypass.py | 171 | "echo hi > /tmp/x.txt && ping -c1 evil-oos.example" | CODE |
| HIGH⚡ | …kages/decepticon/tests/unit/llm/test_oauth_handlers.py | 486 | sse = 'data: {"type": "error", "error": null}\n' | CODE |
| HIGH | …cepticon/tests/unit/references/test_payloads_ingest.py | 22 | "# header comment\n' OR 1=1-- -\n' UNION SELECT null,null-- -\n\n' AND SLEEP(5)-- -\n", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/decepticon/decepticon/plugin_loader.py | 0 | compat shim — content moved to ``decepticon_core.utils.config``. see ``decepticon.core.schemas`` for the rationale and t | STRING |
| HIGH | packages/decepticon/decepticon/tools/research/graph.py | 0 | compat shim — content moved to ``decepticon_core.utils.config``. see ``decepticon.core.schemas`` for the rationale and t | STRING |
| HIGH | packages/decepticon/decepticon/llm/models.py | 0 | compat shim — content moved to ``decepticon_core.utils.config``. see ``decepticon.core.schemas`` for the rationale and t | STRING |
| HIGH | packages/decepticon/decepticon/core/logging.py | 0 | compat shim — content moved to ``decepticon_core.utils.config``. see ``decepticon.core.schemas`` for the rationale and t | STRING |
| HIGH | packages/decepticon/decepticon/core/config.py | 0 | compat shim — content moved to ``decepticon_core.utils.config``. see ``decepticon.core.schemas`` for the rationale and t | STRING |
| HIGH | …ckages/decepticon/decepticon/agents/plugins/patcher.py | 0 | build the recon agent. args: backend: deepagents-style filesystem backend. defaults to ``make_agent_backend(build_sandbo | STRING |
| HIGH | …ages/decepticon/decepticon/agents/plugins/exploiter.py | 0 | build the recon agent. args: backend: deepagents-style filesystem backend. defaults to ``make_agent_backend(build_sandbo | STRING |
| HIGH | …kages/decepticon/decepticon/agents/plugins/verifier.py | 0 | build the recon agent. args: backend: deepagents-style filesystem backend. defaults to ``make_agent_backend(build_sandbo | STRING |
| HIGH | …epticon/decepticon/agents/standard/contract_auditor.py | 0 | build the recon agent. args: backend: deepagents-style filesystem backend. defaults to ``make_agent_backend(build_sandbo | STRING |
| HIGH | …s/decepticon/decepticon/agents/standard/postexploit.py | 0 | build the recon agent. args: backend: deepagents-style filesystem backend. defaults to ``make_agent_backend(build_sandbo | STRING |
| HIGH | …/decepticon/decepticon/agents/standard/cloud_hunter.py | 0 | build the recon agent. args: backend: deepagents-style filesystem backend. defaults to ``make_agent_backend(build_sandbo | STRING |
| HIGH | …kages/decepticon/decepticon/agents/standard/analyst.py | 0 | build the recon agent. args: backend: deepagents-style filesystem backend. defaults to ``make_agent_backend(build_sandbo | STRING |
| HIGH | …ages/decepticon/decepticon/agents/standard/reverser.py | 0 | build the recon agent. args: backend: deepagents-style filesystem backend. defaults to ``make_agent_backend(build_sandbo | STRING |
| HIGH | …s/decepticon/decepticon/agents/standard/ad_operator.py | 0 | build the recon agent. args: backend: deepagents-style filesystem backend. defaults to ``make_agent_backend(build_sandbo | STRING |
| HIGH | …kages/decepticon/decepticon/agents/standard/exploit.py | 0 | build the recon agent. args: backend: deepagents-style filesystem backend. defaults to ``make_agent_backend(build_sandbo | STRING |
| HIGH | packages/decepticon/decepticon/agents/standard/recon.py | 0 | build the recon agent. args: backend: deepagents-style filesystem backend. defaults to ``make_agent_backend(build_sandbo | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | config/litellm.yaml | 114 | # agentic coding specialization. Not a default tier pick (gpt-5.5 stays | COMMENT |
| MEDIUM | config/litellm.yaml | 331 | # >200K context window doubles input + 1.5x output per xAI's pricing | COMMENT |
| MEDIUM | config/litellm_dynamic_config.py | 707 | # gpt-5.3-codex-spark is the agentic-coding model the Codex subscription | COMMENT |
| MEDIUM | config/litellm_dynamic_config.py | 785 | # agentic-coding specialized model (Codex + GPT-5 training | COMMENT |
| MEDIUM | config/litellm_dynamic_config.py | 794 | # gpt-5.3-codex-spark is the agentic-coding model the Codex SUBSCRIPTION | COMMENT |
| MEDIUM | config/claude_code_handler.py | 240 | # levels low|medium|high|xhigh|max). Effort follows the vendor's agentic | COMMENT |
| MEDIUM | docs/engagement-workflow.md | 85 | ### The orchestration loop | COMMENT |
| MEDIUM | docs/setup-guide.md | 19 | - [Agentic Setup — End-to-End Walkthrough](#agentic-setup--end-to-end-walkthrough) | CODE |
| MEDIUM | docs/design/skillogy.md | 414 | ├── build_skill_graph.py # entry point — orchestrates the 12 stages below | CODE |
| MEDIUM | packages/decepticon-sdk/pyproject.toml | 49 | # Source at ``decepticon_sdk.scaffold.cli``. | COMMENT |
| MEDIUM | packages/decepticon-core/decepticon_core/types/llm.py | 353 | # ``kimi-k2-instruct`` ID (context window negotiated at the | COMMENT |
| MEDIUM | …ages/decepticon/decepticon/middleware/event_logging.py | 396 | # Agent output — the reasoning / chain-of-thought. | COMMENT |
| MEDIUM | packages/decepticon/decepticon/sandbox_server/app.py | 219 | # FastAPI dependency injection wrapper for the auth header. Single | COMMENT |
| MEDIUM | …/skills/plugins/llm-redteam/t12-rag-poisoning/SKILL.md | 11 | # T12 — RAG & Knowledge Base Manipulation | COMMENT |
| MEDIUM | …/skills/plugins/llm-redteam/t12-rag-poisoning/SKILL.md | 40 | ### T12.004 — Indirect prompt injection via RAG | COMMENT |
| MEDIUM | …/skills/plugins/llm-redteam/t12-rag-poisoning/SKILL.md | 53 | ### T12.006 — Cross-tenant RAG leak | COMMENT |
| MEDIUM | …lls/standard/analyst/data-and-model-poisoning/SKILL.md | 41 | ### RAG-side persistent injection | COMMENT |
| MEDIUM | …lls/standard/analyst/data-and-model-poisoning/SKILL.md | 101 | ### RAG persistence | COMMENT |
| MEDIUM | …icon/skills/standard/analyst/excessive-agency/SKILL.md | 50 | ### Persistent memory + agentic loop | COMMENT |
| MEDIUM | …lls/standard/analyst/improper-output-handling/SKILL.md | 112 | ### Tool-call SQL injection (agentic systems) | COMMENT |
| MEDIUM | …skills/standard/analyst/unbounded-consumption/SKILL.md | 48 | ### Runaway agentic loop | COMMENT |
| MEDIUM | …skills/standard/analyst/unbounded-consumption/SKILL.md | 82 | # Find agentic loop terminators | COMMENT |
| MEDIUM | …skills/standard/analyst/unbounded-consumption/SKILL.md | 120 | ### Runaway agentic loop | COMMENT |
| MEDIUM | …pticon/skills/standard/analyst/misinformation/SKILL.md | 37 | ### Package hallucination → typosquat | COMMENT |
| MEDIUM | …icon/skills/standard/analyst/prompt-injection/SKILL.md | 91 | ### RAG poisoning | COMMENT |
| MEDIUM | …con/decepticon/skillogy/builder/seeds/asset_types.yaml | 109 | # Container / orchestration | COMMENT |
| MEDIUM | …s/decepticon/tests/unit/agents/test_registry_parity.py | 130 | # Excludes follow-on phases (post-exploit) and meta phases (orchestration / | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | benchmark/runner.py | 49 | CODE | |
| LOW | config/codex_chatgpt_handler.py | 523 | CODE | |
| LOW | config/perplexity_handler.py | 156 | CODE | |
| LOW | config/grok_handler.py | 159 | CODE | |
| LOW | config/gemini_handler.py | 154 | CODE | |
| LOW | config/claude_code_handler.py | 777 | CODE | |
| LOW | config/claude_code_handler.py | 402 | CODE | |
| LOW | config/claude_code_handler.py | 779 | CODE | |
| LOW | config/copilot_handler.py | 296 | CODE | |
| LOW | packages/decepticon/decepticon/middleware/roe.py | 260 | CODE | |
| LOW | packages/decepticon/decepticon/tools/opplan.py | 368 | CODE | |
| LOW | …es/decepticon/decepticon/tools/references/h1_corpus.py | 272 | CODE | |
| LOW | packages/decepticon/decepticon/llm/factory.py | 1055 | CODE | |
| LOW | packages/decepticon/decepticon/llm/factory.py | 1067 | CODE | |
| LOW | …kages/decepticon/decepticon/sandbox_web/fetch_chain.py | 350 | CODE | |
| LOW | …kages/decepticon/decepticon/sandbox_web/fetch_chain.py | 423 | CODE | |
| LOW | packages/decepticon/decepticon/agents/build.py | 457 | CODE | |
| LOW | …ckages/decepticon/decepticon/agents/plugins/scanner.py | 87 | CODE | |
| LOW | …ckages/decepticon/decepticon/agents/plugins/patcher.py | 84 | CODE | |
| LOW | …s/decepticon/decepticon/agents/plugins/vulnresearch.py | 81 | CODE | |
| LOW | …ages/decepticon/decepticon/agents/plugins/exploiter.py | 96 | CODE | |
| LOW | …kages/decepticon/decepticon/agents/plugins/verifier.py | 88 | CODE | |
| LOW | …/decepticon/decepticon/agents/standard/forensicator.py | 67 | CODE | |
| LOW | …epticon/decepticon/agents/standard/contract_auditor.py | 84 | CODE | |
| LOW | …pticon/decepticon/agents/standard/wireless_operator.py | 73 | CODE | |
| LOW | …ecepticon/decepticon/agents/standard/osint_operator.py | 73 | CODE | |
| LOW | …s/decepticon/decepticon/agents/standard/postexploit.py | 84 | CODE | |
| LOW | …/decepticon/decepticon/agents/standard/cloud_hunter.py | 74 | CODE | |
| LOW | …/decepticon/decepticon/agents/standard/ics_operator.py | 68 | CODE | |
| LOW | …kages/decepticon/decepticon/agents/standard/analyst.py | 96 | CODE | |
| LOW | …kages/decepticon/decepticon/agents/standard/phisher.py | 74 | CODE | |
| LOW | …ages/decepticon/decepticon/agents/standard/reverser.py | 78 | CODE | |
| LOW | …on/decepticon/agents/standard/supply_chain_operator.py | 67 | CODE | |
| LOW | …s/decepticon/decepticon/agents/standard/ad_operator.py | 84 | CODE | |
| LOW | …es/decepticon/decepticon/agents/standard/decepticon.py | 77 | CODE | |
| LOW | …cepticon/decepticon/agents/standard/mobile_operator.py | 62 | CODE | |
| LOW | …kages/decepticon/decepticon/agents/standard/exploit.py | 95 | CODE | |
| LOW | …/decepticon/decepticon/agents/standard/iot_operator.py | 67 | CODE | |
| LOW | packages/decepticon/decepticon/agents/standard/recon.py | 83 | CODE | |
| LOW | packages/decepticon/decepticon/telemetry/sink.py | 104 | CODE | |
| LOW | …ages/decepticon/tests/unit/middleware/test_skillogy.py | 146 | CODE | |
| LOW | packages/decepticon/tests/unit/ad/test_adcs_post.py | 24 | CODE | |
| LOW | …es/decepticon/tests/unit/backends/test_http_sandbox.py | 366 | CODE | |
| LOW | …ckages/decepticon/tests/unit/cli/test_auth_branches.py | 41 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/decepticon/decepticon/tools/research/tools.py | 693 | Ingest a SARIF report (semgrep, bandit, gitleaks, trivy, codeql) into the graph. WHEN TO USE: After running any SAR | STRING |
| HIGH | …decepticon/decepticon/tools/research/secret_scanner.py | 154 | Probe ``secret`` against its issuing API and report liveness. Performs a single authenticated HTTP request (over a | STRING |
| HIGH | …kages/decepticon/decepticon/agents/plugins/detector.py | 101 | Build the Detector agent. Notes: - The Detector reads source files via FilesystemMiddleware exclusively; | STRING |
| HIGH | …ges/decepticon/decepticon/agents/standard/blue_cell.py | 83 | Build the Blue Cell agent. Notes: - Read-only: no sandbox bash access (no ``sandbox=`` arg, no ``set_ | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | clients/launcher/cmd/onboard.go | 279 | // Step 0: system check. | COMMENT |
| LOW⚡ | clients/launcher/cmd/onboard.go | 289 | // Step 1: Auth methods (multi-select) | COMMENT |
| LOW | clients/launcher/cmd/onboard.go | 769 | // Step 3: Model profile | COMMENT |
| LOW | clients/launcher/cmd/onboard.go | 782 | // Step 4: Language | COMMENT |
| LOW | packages/decepticon/decepticon/tools/research/patch.py | 210 | # Step 1: optional test suite. | COMMENT |
| LOW | packages/decepticon/decepticon/tools/research/patch.py | 229 | # Step 2: re-run the PoC. | COMMENT |
| LOW | packages/decepticon/decepticon/tools/research/patch.py | 241 | # Step 3: crash-vs-fix detection. | COMMENT |
| LOW⚡ | packages/decepticon/decepticon/tools/bash/bash.py | 232 | # Step 1: surrogate safety | COMMENT |
| LOW⚡ | packages/decepticon/decepticon/tools/bash/bash.py | 234 | # Step 2: strip ANSI | COMMENT |
| LOW⚡ | packages/decepticon/decepticon/tools/bash/bash.py | 236 | # Step 3: compress repetition | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker-compose.watch.yml | 7 | # Usage: | COMMENT |
| LOW | scripts/install.sh | 5 | # Usage: | COMMENT |
| LOW | scripts/web-hotswap.sh | 9 | # Usage: | COMMENT |
| LOW | …kages/decepticon/decepticon/tools/reversing/scripts.py | 12 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …s/decepticon/decepticon/tools/network/vulnerability.py | 323 | # Check if version matches affected versions | COMMENT |
| LOW | …ckages/decepticon/decepticon/tools/network/scanners.py | 331 | # Check if nmap is available | COMMENT |
| LOW | telemetry-gateway/build_dashboard.py | 25 | # Set OLD_DASHBOARD_ID to retire a previous dashboard (+ its insights) first. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/decepticon/decepticon/llm/factory.py | 317 | "placeholder", | CODE |
| LOW | packages/decepticon/tests/unit/tools/test_defense.py | 254 | monkeypatch.setenv("DEFENDER_TOKEN", "fake-token") | STRING |
| LOW | packages/decepticon/tests/unit/tools/test_defense.py | 286 | monkeypatch.setenv("DEFENDER_TOKEN", "fake-token") | STRING |
| LOW⚡ | packages/decepticon/tests/unit/llm/test_factory.py | 51 | for token in ("placeholder", "not-used", "dummy", "fake", "example"): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …kages/decepticon/tests/unit/server/test_plugins_api.py | 290 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …icon/tests/unit/references/test_fetch_comprehensive.py | 368 | # Create a real dir to point at | COMMENT |