基于 AI Agent + MCP 工具链 + 渗透 Skill 编排, 配合大语言模型, 自然语言输入 → 自动完成「信息收集 → 漏洞发现 → 漏洞利用 → 报告生成」全流程。
This report presents the forensic synthetic code analysis of Unclecheng-li/VulnClaw, a Python project with 3,024 GitHub stars. SynthScan v2.0 examined 159,859 lines of code across 603 source files, recording 2163 pattern matches distributed across 18 syntactic categories. The overall adjusted score of 17.8 places this repository in the Moderate 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).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
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 2163 distinct pattern matches across 18 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 | frontend/src/App.tsx | 222 | function openBoundaryForActiveTask() { | CODE |
| LOW | frontend/src/utils/preferences.ts | 82 | function normalizeBoundaryDefaults(value: unknown): BoundaryDefaults { | CODE |
| LOW | frontend/src/utils/taskLabels.ts | 123 | export function countConstraintViolations( | CODE |
| LOW | frontend/src/pages/SafetyBoundaryPage.tsx | 90 | function boundaryDefaultsToConstraints(defaults: BoundaryDefaults): Record<string, unknown> { | CODE |
| LOW | tests/test_context_budget.py | 46 | def test_group_truncation_keeps_assistant_tool_exchange_together(): | CODE |
| LOW | tests/test_context_budget.py | 66 | def test_prepare_context_compacts_history_and_records_durable_digest(): | CODE |
| LOW | tests/test_context_budget.py | 84 | def test_tool_schema_and_output_reserve_are_part_of_budget(): | CODE |
| LOW | tests/test_context_budget.py | 106 | def test_disabled_auto_compaction_preserves_history_until_hard_limit(): | CODE |
| LOW | tests/test_context_budget.py | 121 | def test_legacy_solve_compaction_settings_migrate_to_global_policy(): | CODE |
| LOW | tests/test_context_budget.py | 136 | def test_new_context_settings_take_precedence_over_legacy_aliases(): | CODE |
| LOW | tests/traffic/test_report_export.py | 20 | def test_verified_finding_inlines_http_capture(tmp_path): | CODE |
| LOW | tests/traffic/test_report_export.py | 32 | def _run_http_capture_inlining_assertions(tmp_path): | CODE |
| LOW | tests/traffic/test_report_export.py | 76 | def test_verified_finding_inlines_http_capture_english(tmp_path): | CODE |
| LOW | tests/traffic/test_report_export.py | 128 | def test_shared_resolver_finds_config_default_when_no_run_captures(tmp_path, monkeypatch): | CODE |
| LOW | tests/traffic/test_report_export.py | 161 | def test_write_resolver_never_falls_back_to_stale_store(tmp_path, monkeypatch): | CODE |
| LOW | tests/traffic/test_report_export.py | 184 | def test_report_without_captures_is_unaffected(tmp_path): | CODE |
| LOW | tests/traffic/test_normalize_replay.py | 27 | def test_burp_history_normalizes_with_proxy_source(tmp_path): | CODE |
| LOW | tests/traffic/test_normalize_replay.py | 51 | def test_chrome_devtools_normalizes_with_browser_source(tmp_path): | CODE |
| LOW | tests/traffic/test_normalize_replay.py | 72 | def test_replay_issues_with_overrides_and_records_manual_replay(tmp_path): | CODE |
| LOW | tests/traffic/test_store.py | 33 | def test_in_scope_request_writes_one_line_and_blobs(tmp_path): | CODE |
| LOW | tests/traffic/test_store.py | 61 | def test_request_id_stable_across_resume(tmp_path): | CODE |
| LOW⚡ | tests/traffic/test_store.py | 81 | def test_out_of_scope_host_is_dropped(tmp_path): | CODE |
| LOW⚡ | tests/traffic/test_store.py | 89 | def test_subdomain_scope_mode(tmp_path): | CODE |
| LOW⚡ | tests/traffic/test_store.py | 97 | def test_sitemap_reflects_hosts_and_paths(tmp_path): | CODE |
| LOW | tests/traffic/test_backends.py | 52 | def test_availability_helpers_return_bool(): | CODE |
| LOW | tests/traffic/test_backends.py | 57 | def test_mitm_addon_captures_in_scope_flow(tmp_path): | CODE |
| LOW | tests/traffic/test_backends.py | 71 | def test_mitm_addon_drops_out_of_scope_flow(tmp_path): | CODE |
| LOW | tests/traffic/test_backends.py | 79 | def test_exchange_from_flow_maps_fields(): | CODE |
| LOW | tests/traffic/test_backends.py | 127 | def test_browser_bridge_captures_in_scope_with_body(tmp_path): | CODE |
| LOW | tests/traffic/test_backends.py | 143 | def test_exchange_from_playwright_handles_callable_and_attr(): | CODE |
| LOW | tests/traffic/test_tools.py | 48 | def test_traffic_list_enumerates_and_filters(tmp_path): | CODE |
| LOW⚡ | tests/traffic/test_tools.py | 59 | def test_traffic_view_returns_stored_pair(tmp_path): | CODE |
| LOW⚡ | tests/traffic/test_tools.py | 68 | def test_traffic_view_missing_id(tmp_path): | CODE |
| LOW⚡ | tests/traffic/test_tools.py | 73 | def test_traffic_repeat_records_manual_replay(tmp_path): | CODE |
| LOW | tests/traffic/test_tools.py | 90 | def test_traffic_sitemap_reflects_capture(tmp_path): | CODE |
| LOW | tests/traffic/test_tools.py | 98 | def test_schemas_cover_all_tool_names(): | CODE |
| LOW⚡ | tests/traffic/test_tools.py | 117 | async def test_execute_mcp_tool_routes_traffic(tmp_path): | CODE |
| LOW⚡ | tests/traffic/test_tools.py | 127 | def test_build_openai_tools_includes_traffic(): | CODE |
| LOW⚡ | tests/traffic/test_tools.py | 135 | async def test_traffic_repeat_blocked_by_host_constraint(tmp_path): | CODE |
| LOW | tests/traffic/test_tools.py | 153 | def test_traffic_repeat_guard_allows_in_scope_and_uses_stored_url(tmp_path): | CODE |
| LOW⚡ | tests/intel/test_attack.py | 10 | def test_mapper_maps_findings_to_techniques(): | CODE |
| LOW⚡ | tests/intel/test_attack.py | 18 | def test_tool_techniques_lookup(): | CODE |
| LOW⚡ | tests/intel/test_attack.py | 24 | def test_navigator_layer_is_valid_json(): | CODE |
| LOW⚡ | tests/intel/test_attack.py | 32 | def test_format_report_markdown(): | CODE |
| LOW⚡ | tests/intel/test_attack.py | 38 | def test_list_tactics_and_techniques(): | CODE |
| LOW⚡ | tests/intel/test_attack.py | 44 | async def test_tool_markdown_default(): | CODE |
| LOW⚡ | tests/intel/test_attack.py | 50 | async def test_tool_navigator_format(): | CODE |
| LOW | tests/intel/test_attack.py | 69 | async def test_tool_session_fallback(): | CODE |
| LOW | tests/intel/test_agent_seam.py | 6 | def test_builder_includes_intel_schemas(): | CODE |
| LOW | tests/intel/test_agent_seam.py | 13 | async def test_execute_routes_intel_tool(monkeypatch): | CODE |
| LOW⚡ | tests/intel/test_findings.py | 21 | def test_finding_risk_uses_severity_weight(): | CODE |
| LOW⚡ | tests/intel/test_findings.py | 26 | def test_finding_risk_prefers_cvss(): | CODE |
| LOW⚡ | tests/intel/test_findings.py | 31 | def test_score_findings_counts_and_total(): | CODE |
| LOW⚡ | tests/intel/test_findings.py | 42 | def test_score_findings_open_only_false_includes_rejected(): | CODE |
| LOW⚡ | tests/intel/test_findings.py | 48 | def test_annotate_compliance_attaches_controls(): | CODE |
| LOW⚡ | tests/intel/test_findings.py | 57 | def test_diff_new_fixed_persistent(): | CODE |
| LOW⚡ | tests/intel/test_findings.py | 74 | def test_diff_detects_severity_regression(): | CODE |
| LOW⚡ | tests/intel/test_findings.py | 83 | def test_diff_accepts_raw_lists(): | CODE |
| LOW⚡ | tests/intel/test_findings.py | 88 | def test_format_risk_report_with_compliance(): | CODE |
| LOW⚡ | tests/intel/test_findings.py | 96 | def test_format_diff_sections(): | CODE |
| 1178 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pyproject.toml | 38 | # ── 沙箱依赖(python_execute 运行时)────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/intel/test_osint.py | 53 | # ── pure helpers ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/intel/test_osint.py | 71 | # ── HTTP features via MockTransport ────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/intel/test_osint.py | 149 | # ── DNS fallback ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/intel/test_osint.py | 164 | # ── formatting ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/intel/test_osint.py | 183 | # ── tool ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/kb/test_kb_fallback.py | 46 | # ── Automatic degradation when ChromaDB unavailable ────────────────── | COMMENT |
| MEDIUM⚡ | tests/kb/test_kb_fallback.py | 70 | # ── Keyword retrieval functionality ────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/kb/test_kb_fallback.py | 106 | # ── Status reporting ───────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/kb/test_kb_fallback.py | 124 | # ── Retrieval result caching (via kb_context) ──────────────────────── | COMMENT |
| MEDIUM⚡ | tests/kb/test_kb_fallback.py | 295 | # ── Full-corpus loading from store ─────────────────────────────────── | COMMENT |
| MEDIUM | tests/kb/test_kb_fallback.py | 190 | # ── Language gate (ticket #65) ──────────────────────────────────────── | COMMENT |
| MEDIUM | tests/kb/test_kb.py | 4 | # ── store.py ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/kb/test_kb.py | 130 | # ── retriever.py ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/kb/test_kb.py | 260 | # ── updater.py ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/config/test_token_provider.py | 26 | # ── static mode ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/config/test_token_provider.py | 46 | # ── oauth store + resolution ───────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/config/test_token_provider.py | 81 | # ── Sign in with ChatGPT (Codex OAuth client) ──────────────────────── | COMMENT |
| MEDIUM | tests/config/test_config.py | 6 | # ── schema.py ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/config/test_config.py | 306 | # ── settings.py ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/agent/test_agent.py | 7 | # ── context.py ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/agent/test_agent.py | 560 | # ── memory.py ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/agent/test_agent.py | 852 | # ── prompts.py ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/agent/test_agent.py | 967 | # ── core.py ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/agent/test_finding_similarity.py | 15 | # ── normalize_text ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/agent/test_finding_similarity.py | 37 | # ── text_similarity ────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/agent/test_finding_similarity.py | 63 | # ── url_similarity ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/agent/test_finding_similarity.py | 97 | # ── normalize_vuln_type ────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/agent/test_finding_similarity.py | 134 | # ── finding_similarity ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/agent/test_finding_similarity.py | 184 | # ── deduplicate_findings ───────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/agent/test_finding_similarity.py | 238 | # ── SessionState integration ───────────────────────────────────────── | COMMENT |
| MEDIUM | tests/agent/test_recon_tools.py | 55 | # ── JS 提取(纯函数)──────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/agent/test_recon_tools.py | 119 | # ── 空间测绘:查询构造 + 解析 ─────────────────────────────────────── | COMMENT |
| MEDIUM | tests/agent/test_recon_tools.py | 172 | # ── 目录枚举:全局伪装 200 识别 ───────────────────────────────────── | COMMENT |
| MEDIUM | tests/agent/test_recon_tools.py | 214 | # ── 子域名枚举:被动聚合 + 字典爆破关闭时不解析 ───────────────────── | COMMENT |
| MEDIUM | tests/agent/test_chatgpt_proxy.py | 14 | # ── Pure translation functions ─────────────────────────────────────── | COMMENT |
| MEDIUM | tests/agent/test_chatgpt_proxy.py | 138 | # ── Integration: proxy server ↔ mock ChatGPT backend ───────────────── | COMMENT |
| MEDIUM⚡ | tests/agent/test_agent_graph.py | 41 | # ── Node lifecycle ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/agent/test_agent_graph.py | 221 | # ── Persistence ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/agent/test_agent_graph.py | 133 | # ── Root-completion rule (fail-loud) ───────────────────────────────── | COMMENT |
| MEDIUM | tests/agent/test_agent_graph.py | 176 | # ── Bounded fan-out caps ───────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/agent/test_agent_graph.py | 266 | # ── Resume ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/mcp/test_mcp_lifecycle.py | 48 | # ── start / stop ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/mcp/test_mcp_lifecycle.py | 110 | # ── graceful termination (SIGTERM-then-SIGKILL semantics) ──────────── | COMMENT |
| MEDIUM⚡ | tests/mcp/test_mcp_lifecycle.py | 157 | # ── auto-restart ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/mcp/test_mcp_lifecycle.py | 314 | # ── stats tracking ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/mcp/test_mcp_lifecycle.py | 255 | # ── health check ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/mcp/test_mcp_lifecycle.py | 606 | # ── stdio cross-task shutdown noise (issue #81) ────────────────────── | COMMENT |
| MEDIUM⚡ | tests/mcp/test_mcp.py | 103 | # ── router.py ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/mcp/test_mcp.py | 7 | # ── registry.py ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/mcp/test_mcp.py | 221 | # ── lifecycle.py ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/cli/test_cli_noninteractive.py | 220 | # ── Exit-code contract ────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/cli/test_cli_noninteractive.py | 285 | # ── Prescribed workflow docs parse-check ──────────────────────────── | COMMENT |
| MEDIUM | tests/cli/test_cli_noninteractive.py | 80 | # ── Non-interactive: no prompts, structured output ────────────────── | COMMENT |
| MEDIUM | tests/cli/test_cli_noninteractive.py | 153 | # ── Scan-mode presets applied to the engine ───────────────────────── | COMMENT |
| MEDIUM | tests/report/test_report.py | 5 | # ── generator.py ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/report/test_report.py | 475 | # ── i18n: standard report (issue #62) ────────────────────────────── | COMMENT |
| MEDIUM | tests/report/test_report.py | 627 | # ── i18n: report recommendations (issue #63) ───────────────────────── | COMMENT |
| MEDIUM | tests/report/test_report.py | 824 | # ── poc_builder.py ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/skills/test_skills.py | 388 | # ── flag_skills.py ──────────────────────────────────────────────── | COMMENT |
| 241 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | conftest.py | 1 | CODE | |
| LOW | tests/test_context_budget.py | 1 | CODE | |
| LOW | tests/traffic/test_report_export.py | 3 | CODE | |
| LOW | tests/traffic/test_normalize_replay.py | 3 | CODE | |
| LOW | tests/traffic/test_store.py | 3 | CODE | |
| LOW | tests/traffic/test_backends.py | 3 | CODE | |
| LOW | tests/traffic/test_tools.py | 3 | CODE | |
| LOW | tests/config/test_token_provider.py | 3 | CODE | |
| LOW | tests/plugins/test_builtin_plugins.py | 1 | CODE | |
| LOW | tests/plugins/test_plugin_cli.py | 1 | CODE | |
| LOW | tests/plugins/test_plugin_runtime.py | 1 | CODE | |
| LOW | tests/plugins/test_plugin_integration.py | 1 | CODE | |
| LOW | tests/web/test_auth.py | 8 | CODE | |
| LOW | tests/meta/test_release.py | 1 | CODE | |
| LOW | tests/meta/test_release_workflow.py | 1 | CODE | |
| LOW | tests/agent/test_constraint_policy_infer.py | 8 | CODE | |
| LOW | tests/agent/test_finding_similarity.py | 3 | CODE | |
| LOW | tests/agent/test_recon_tools.py | 1 | CODE | |
| LOW | tests/agent/test_agent_context_protocol.py | 14 | CODE | |
| LOW | tests/agent/test_parallel_agents.py | 3 | CODE | |
| LOW | tests/agent/test_stream_robustness.py | 13 | CODE | |
| LOW | tests/agent/test_context_vault.py | 11 | CODE | |
| LOW | tests/agent/test_ctf_mode.py | 3 | CODE | |
| LOW | tests/agent/test_regression_prior_fixes.py | 14 | CODE | |
| LOW | tests/agent/test_subagent_architecture.py | 1 | CODE | |
| LOW | tests/agent/test_input_analysis_i18n.py | 10 | CODE | |
| LOW | tests/agent/test_chatgpt_proxy.py | 3 | CODE | |
| LOW | tests/agent/test_agent_graph.py | 3 | CODE | |
| LOW | tests/agent/test_roles.py | 3 | CODE | |
| LOW | tests/agent/test_llm_client_streaming.py | 3 | CODE | |
| LOW | tests/agent/test_loop_controller_i18n.py | 1 | CODE | |
| LOW | tests/agent/test_tool_parallel.py | 3 | CODE | |
| LOW | tests/agent/test_constraint_tool_action.py | 3 | CODE | |
| LOW | tests/mcp/test_mcp_lifecycle.py | 3 | CODE | |
| LOW | tests/mcp/test_mcp_fetch_cookies.py | 8 | CODE | |
| LOW | tests/cli/test_cli_noninteractive.py | 3 | CODE | |
| LOW | tests/run/test_headless.py | 3 | CODE | |
| LOW | tests/run/test_run_persistence.py | 1 | CODE | |
| LOW | tests/i18n/test_agent_runtime_i18n_catalog.py | 1 | CODE | |
| LOW | tests/i18n/test_phase_i18n.py | 3 | CODE | |
| LOW | vulnclaw/headless.py | 24 | CODE | |
| LOW | vulnclaw/targets.py | 3 | CODE | |
| LOW | vulnclaw/repl_runner.py | 3 | CODE | |
| LOW | vulnclaw/run_context.py | 3 | CODE | |
| LOW | vulnclaw/orchestrator.py | 3 | CODE | |
| LOW | vulnclaw/traffic/store.py | 11 | CODE | |
| LOW | vulnclaw/traffic/models.py | 10 | CODE | |
| LOW | vulnclaw/traffic/paths.py | 9 | CODE | |
| LOW | vulnclaw/traffic/mitm_addon.py | 15 | CODE | |
| LOW | vulnclaw/traffic/mitm_addon.py | 32 | CODE | |
| LOW | vulnclaw/traffic/normalize.py | 11 | CODE | |
| LOW | vulnclaw/traffic/tools.py | 9 | CODE | |
| LOW | vulnclaw/traffic/__init__.py | 10 | CODE | |
| LOW | vulnclaw/traffic/__init__.py | 12 | CODE | |
| LOW | vulnclaw/traffic/__init__.py | 13 | CODE | |
| LOW | vulnclaw/traffic/__init__.py | 13 | CODE | |
| LOW | vulnclaw/traffic/__init__.py | 13 | CODE | |
| LOW | vulnclaw/traffic/__init__.py | 13 | CODE | |
| LOW | vulnclaw/traffic/__init__.py | 13 | CODE | |
| LOW | vulnclaw/traffic/__init__.py | 13 | CODE | |
| 198 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/config/test_token_provider.py | 147 | except Exception: | CODE |
| LOW | tests/mcp/test_mcp.py | 268 | except Exception: | CODE |
| LOW⚡ | tests/report/test_report.py | 297 | except Exception: | CODE |
| LOW | vulnclaw/orchestrator.py | 181 | except Exception as exc: | CODE |
| LOW | vulnclaw/traffic/models.py | 40 | except Exception: | CODE |
| LOW | vulnclaw/traffic/mitm_addon.py | 33 | except Exception: | CODE |
| LOW | vulnclaw/traffic/tools.py | 171 | except Exception as exc: # network / transport errors | CODE |
| LOW | vulnclaw/traffic/browser.py | 32 | except Exception: | CODE |
| LOW | vulnclaw/traffic/browser.py | 49 | except Exception: | CODE |
| LOW | vulnclaw/intel/osint.py | 302 | except Exception: | CODE |
| LOW | vulnclaw/intel/osint.py | 345 | except Exception: | CODE |
| LOW | vulnclaw/intel/osint.py | 703 | except Exception as exc: # never raise into the agent loop | CODE |
| LOW | vulnclaw/intel/remediation.py | 266 | except Exception as e: | CODE |
| LOW | vulnclaw/intel/remediation.py | 295 | except Exception as e: | CODE |
| LOW⚡ | vulnclaw/kb/retriever.py | 39 | except Exception as exc: # pragma: no cover - exercised when chromadb missing | CODE |
| LOW | vulnclaw/kb/retriever.py | 215 | except Exception as exc: # pragma: no cover - defensive | CODE |
| LOW | vulnclaw/kb/retriever.py | 221 | except Exception as exc: | CODE |
| LOW | vulnclaw/kb/retriever.py | 264 | except Exception as exc: # pragma: no cover - defensive | CODE |
| LOW | vulnclaw/target_state/planner.py | 247 | except Exception: | CODE |
| LOW | vulnclaw/config/__init__.py | 23 | except Exception: | STRING |
| LOW | vulnclaw/config/settings.py | 524 | except Exception: | CODE |
| LOW | vulnclaw/config/url_utils.py | 23 | except Exception: | CODE |
| LOW | vulnclaw/plugins/runtime.py | 69 | except Exception as exc: | CODE |
| LOW | vulnclaw/web/services/task_service.py | 137 | except Exception as exc: | CODE |
| LOW | vulnclaw/agent/recon_tools.py | 343 | except Exception as e: # 单引擎失败不影响其他引擎 | CODE |
| LOW | vulnclaw/agent/recon_tools.py | 347 | except Exception as e: | CODE |
| LOW | vulnclaw/agent/recon_tools.py | 399 | except Exception as e: | CODE |
| LOW | vulnclaw/agent/recon_tools.py | 402 | except Exception as e: | CODE |
| LOW | vulnclaw/agent/recon_tools.py | 420 | except Exception: | CODE |
| LOW | vulnclaw/agent/recon_tools.py | 564 | except Exception: | CODE |
| LOW | vulnclaw/agent/recon_tools.py | 568 | except Exception as e: | CODE |
| LOW | vulnclaw/agent/recon_tools.py | 715 | except Exception as e: | CODE |
| LOW | vulnclaw/agent/recon_tools.py | 735 | except Exception: | CODE |
| LOW | vulnclaw/agent/recon_tools.py | 782 | except Exception as e: | CODE |
| LOW | vulnclaw/agent/recon_tools.py | 867 | except Exception: | CODE |
| LOW | vulnclaw/agent/recon_tools.py | 878 | except Exception: | CODE |
| LOW | vulnclaw/agent/recon_tools.py | 888 | except Exception as e: | CODE |
| LOW | vulnclaw/agent/loop_controller.py | 270 | except Exception as e: | CODE |
| LOW | vulnclaw/agent/loop_controller.py | 384 | except Exception: | CODE |
| LOW | vulnclaw/agent/loop_controller.py | 402 | except Exception as e: | CODE |
| LOW | vulnclaw/agent/kb_context.py | 57 | except Exception as exc: # defensive — never break the agent loop | CODE |
| LOW | vulnclaw/agent/kb_context.py | 105 | except Exception as exc: # defensive — retrieval must never break the loop | CODE |
| LOW | vulnclaw/agent/prompt_context.py | 317 | except Exception: | CODE |
| LOW | vulnclaw/agent/solver.py | 635 | except Exception as exc: | CODE |
| LOW | vulnclaw/agent/solver.py | 770 | except Exception: | CODE |
| LOW | vulnclaw/agent/solver.py | 789 | except Exception: | CODE |
| LOW | vulnclaw/agent/tool_call_manager.py | 89 | except Exception as exc: | CODE |
| LOW | vulnclaw/agent/tool_call_manager.py | 347 | except Exception as exc: | CODE |
| LOW | vulnclaw/agent/core.py | 56 | except Exception: | CODE |
| LOW | vulnclaw/agent/core.py | 113 | except Exception: | CODE |
| LOW | vulnclaw/agent/core.py | 120 | except Exception: | CODE |
| LOW | vulnclaw/agent/core.py | 267 | except Exception: | CODE |
| LOW | vulnclaw/agent/core.py | 288 | except Exception: | CODE |
| LOW | vulnclaw/agent/core.py | 511 | except Exception as e: | CODE |
| LOW | vulnclaw/agent/team.py | 109 | except Exception: | CODE |
| LOW | vulnclaw/agent/team.py | 146 | except Exception: | CODE |
| LOW | vulnclaw/agent/chatgpt_proxy.py | 414 | except Exception: # noqa: BLE001 - models listing is best-effort | CODE |
| LOW | vulnclaw/agent/chatgpt_proxy.py | 451 | except Exception as exc: # noqa: BLE001 - surface anything as an API error | CODE |
| LOW | vulnclaw/agent/llm_client.py | 463 | except Exception as exc: | CODE |
| LOW | vulnclaw/agent/llm_client.py | 650 | except Exception as exc: | CODE |
| 94 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | README.md | 406 | # Step 1: 启动 Chrome 远程调试 | COMMENT |
| LOW | README.md | 412 | # Step 2: 启用 VulnClaw 配置 | COMMENT |
| LOW⚡ | README.md | 437 | # Step 1: 克隆并构建 | COMMENT |
| LOW⚡ | README.md | 442 | # Step 2: 加载到 Burp Suite → Extensions → Add → Type: Java → 选择 burp-mcp-all.jar | COMMENT |
| LOW⚡ | README.md | 444 | # Step 3: 在 Burp 的 MCP 标签页勾选 "Enabled" | COMMENT |
| LOW⚡ | README.md | 446 | # Step 4: 启用 VulnClaw 配置 | COMMENT |
| LOW | README_EN.md | 414 | # Step 1: Start Chrome with remote debugging | COMMENT |
| LOW | README_EN.md | 420 | # Step 2: Enable in VulnClaw | COMMENT |
| LOW⚡ | README_EN.md | 445 | # Step 1: Clone and build | COMMENT |
| LOW⚡ | README_EN.md | 450 | # Step 2: Load into Burp Suite → Extensions → Add → Type: Java → select burp-mcp-all.jar | COMMENT |
| LOW⚡ | README_EN.md | 452 | # Step 3: Enable in Burp's MCP tab | COMMENT |
| LOW⚡ | README_EN.md | 454 | # Step 4: Enable in VulnClaw | COMMENT |
| LOW⚡ | docs/mcp-deployment.md | 113 | #### Step 1: 克隆并构建 | COMMENT |
| LOW⚡ | docs/mcp-deployment.md | 123 | #### Step 2: 加载到 Burp Suite | COMMENT |
| LOW⚡ | docs/mcp-deployment.md | 130 | #### Step 3: 启用 MCP Server | COMMENT |
| LOW⚡ | vulnclaw/config/token_provider.py | 209 | # WARNING: This authenticates against OpenAI's first-party Codex OAuth client. | COMMENT |
| LOW | …6-04-19_php-weak-comparison_double-write-md5-bypass.md | 100 | # Step 1: 设置 L1 + L2 session | COMMENT |
| LOW | …6-04-19_php-weak-comparison_double-write-md5-bypass.md | 104 | # Step 2: 触发 L3 + 获取 flag | COMMENT |
| LOW⚡ | vulnclaw/agent/builtin_tools.py | 2151 | # Step 1: Get login page for initial CSRF and session | COMMENT |
| LOW | vulnclaw/agent/builtin_tools.py | 2181 | # Step 2: Try each password | COMMENT |
| LOW | …verse/references/android-authorized-app-pentest-sop.md | 50 | ## Step 1: Confirm device and app presence | COMMENT |
| LOW | …verse/references/android-authorized-app-pentest-sop.md | 67 | ## Step 2: Prepare packet visibility first | COMMENT |
| LOW | …verse/references/android-authorized-app-pentest-sop.md | 77 | ## Step 3: Drive the real business flow | COMMENT |
| LOW | …verse/references/android-authorized-app-pentest-sop.md | 89 | ## Step 4: After each important action, inspect runtime evidence | COMMENT |
| LOW | …verse/references/android-authorized-app-pentest-sop.md | 105 | ## Step 5: Branch by packet result | COMMENT |
| LOW | …ences/android-ui-driven-observation-and-packet-loop.md | 35 | ### Step 1: Prepare the runtime view | COMMENT |
| LOW | …ences/android-ui-driven-observation-and-packet-loop.md | 58 | ### Step 2: Create a visual checkpoint | COMMENT |
| LOW | …ences/android-ui-driven-observation-and-packet-loop.md | 68 | ### Step 3: Analyze the current screen | COMMENT |
| LOW | …ences/android-ui-driven-observation-and-packet-loop.md | 93 | ### Step 4: Execute the next UI action | COMMENT |
| LOW | …ences/android-ui-driven-observation-and-packet-loop.md | 126 | ### Step 5: Tie UI action to packet capture | COMMENT |
| LOW | …ences/android-ui-driven-observation-and-packet-loop.md | 139 | ### Step 6: Promote the packet into replay analysis | COMMENT |
| LOW | …erences/android-external-url-runtime-first-workflow.md | 55 | ### Step 1: Confirm device and app presence | COMMENT |
| LOW | …erences/android-external-url-runtime-first-workflow.md | 72 | ### Step 2: Prepare packet visibility first | COMMENT |
| LOW | …erences/android-external-url-runtime-first-workflow.md | 82 | ### Step 3: Drive the app to the target feature | COMMENT |
| LOW | …erences/android-external-url-runtime-first-workflow.md | 108 | ### Step 4: Inspect the screenshot before reversing | COMMENT |
| LOW | …erences/android-external-url-runtime-first-workflow.md | 125 | ### Step 5: Review logs for cheap evidence | COMMENT |
| LOW | …erences/android-external-url-runtime-first-workflow.md | 137 | ### Step 6: Check Burp and Charles | COMMENT |
| LOW | …erences/android-external-url-runtime-first-workflow.md | 151 | ### Step 7: Branch by packet visibility | COMMENT |
| LOW | …/specialized/osint-recon/references/author-tracking.md | 9 | ## Step 1: 从页面提取作者标识 | COMMENT |
| LOW | …/specialized/osint-recon/references/author-tracking.md | 62 | ## Step 2: GitHub 追踪 | COMMENT |
| LOW | …/specialized/osint-recon/references/author-tracking.md | 126 | ## Step 3: 跨平台关联 | COMMENT |
| LOW | …/specialized/osint-recon/references/author-tracking.md | 157 | ## Step 4: 信息汇总模板 | COMMENT |
| LOW | …ntest/references/android-authorized-app-pentest-sop.md | 50 | ## Step 1: Confirm device and app presence | COMMENT |
| LOW | …ntest/references/android-authorized-app-pentest-sop.md | 67 | ## Step 2: Prepare packet visibility first | COMMENT |
| LOW | …ntest/references/android-authorized-app-pentest-sop.md | 77 | ## Step 3: Drive the real business flow | COMMENT |
| LOW | …ntest/references/android-authorized-app-pentest-sop.md | 89 | ## Step 4: After each important action, inspect runtime evidence | COMMENT |
| LOW | …ntest/references/android-authorized-app-pentest-sop.md | 105 | ## Step 5: Branch by packet result | COMMENT |
| LOW | …ences/android-ui-driven-observation-and-packet-loop.md | 35 | ### Step 1: Prepare the runtime view | COMMENT |
| LOW | …ences/android-ui-driven-observation-and-packet-loop.md | 58 | ### Step 2: Create a visual checkpoint | COMMENT |
| LOW | …ences/android-ui-driven-observation-and-packet-loop.md | 68 | ### Step 3: Analyze the current screen | COMMENT |
| LOW | …ences/android-ui-driven-observation-and-packet-loop.md | 93 | ### Step 4: Execute the next UI action | COMMENT |
| LOW | …ences/android-ui-driven-observation-and-packet-loop.md | 126 | ### Step 5: Tie UI action to packet capture | COMMENT |
| LOW | …ences/android-ui-driven-observation-and-packet-loop.md | 139 | ### Step 6: Promote the packet into replay analysis | COMMENT |
| LOW | …erences/android-external-url-runtime-first-workflow.md | 55 | ### Step 1: Confirm device and app presence | COMMENT |
| LOW | …erences/android-external-url-runtime-first-workflow.md | 72 | ### Step 2: Prepare packet visibility first | COMMENT |
| LOW | …erences/android-external-url-runtime-first-workflow.md | 82 | ### Step 3: Drive the app to the target feature | COMMENT |
| LOW | …erences/android-external-url-runtime-first-workflow.md | 108 | ### Step 4: Inspect the screenshot before reversing | COMMENT |
| LOW | …erences/android-external-url-runtime-first-workflow.md | 125 | ### Step 5: Review logs for cheap evidence | COMMENT |
| LOW | …erences/android-external-url-runtime-first-workflow.md | 137 | ### Step 6: Check Burp and Charles | COMMENT |
| LOW | …erences/android-external-url-runtime-first-workflow.md | 151 | ### Step 7: Branch by packet visibility | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | vulnclaw/orchestrator.py | 40 | CODE | |
| LOW | vulnclaw/intel/compliance.py | 255 | CODE | |
| LOW | vulnclaw/intel/osint.py | 357 | CODE | |
| LOW | vulnclaw/intel/osint.py | 398 | CODE | |
| LOW | vulnclaw/intel/attack.py | 780 | CODE | |
| LOW | vulnclaw/intel/topology.py | 430 | CODE | |
| LOW | vulnclaw/intel/remediation.py | 244 | CODE | |
| LOW | vulnclaw/intel/cve.py | 84 | CODE | |
| LOW | vulnclaw/kb/store.py | 44 | CODE | |
| LOW | vulnclaw/kb/store.py | 113 | CODE | |
| LOW | vulnclaw/kb/store.py | 160 | CODE | |
| LOW | vulnclaw/config/settings.py | 147 | CODE | |
| LOW | vulnclaw/agent/recon_tools.py | 372 | CODE | |
| LOW | vulnclaw/agent/recon_tools.py | 448 | CODE | |
| LOW | vulnclaw/agent/recon_tools.py | 668 | CODE | |
| LOW | vulnclaw/agent/recon_tools.py | 819 | CODE | |
| LOW | vulnclaw/agent/recon_tools.py | 701 | CODE | |
| LOW | vulnclaw/agent/recon_tools.py | 390 | CODE | |
| LOW | vulnclaw/agent/prompt_context.py | 15 | CODE | |
| LOW | vulnclaw/agent/solver.py | 215 | CODE | |
| LOW | vulnclaw/agent/solver.py | 581 | CODE | |
| LOW | vulnclaw/agent/memory.py | 185 | CODE | |
| LOW | vulnclaw/agent/token_counter.py | 42 | CODE | |
| LOW | vulnclaw/agent/token_counter.py | 125 | CODE | |
| LOW | vulnclaw/agent/context_vault.py | 125 | CODE | |
| LOW | vulnclaw/agent/context_vault.py | 322 | CODE | |
| LOW | vulnclaw/agent/context_budget.py | 212 | CODE | |
| LOW | vulnclaw/agent/chatgpt_proxy.py | 175 | CODE | |
| LOW | vulnclaw/agent/chatgpt_proxy.py | 289 | CODE | |
| LOW | vulnclaw/agent/llm_client.py | 425 | CODE | |
| LOW | vulnclaw/agent/llm_client.py | 860 | CODE | |
| LOW | vulnclaw/agent/llm_client.py | 972 | CODE | |
| LOW | vulnclaw/agent/input_analysis.py | 143 | CODE | |
| LOW | vulnclaw/agent/input_analysis.py | 291 | CODE | |
| LOW | vulnclaw/agent/network_scan.py | 449 | CODE | |
| LOW | vulnclaw/agent/finding_parser.py | 111 | CODE | |
| LOW | vulnclaw/agent/ctf_mode.py | 29 | CODE | |
| LOW | vulnclaw/agent/builtin_tools.py | 103 | CODE | |
| LOW | vulnclaw/agent/builtin_tools.py | 709 | CODE | |
| LOW | vulnclaw/agent/builtin_tools.py | 833 | CODE | |
| LOW | vulnclaw/agent/builtin_tools.py | 1069 | CODE | |
| LOW | vulnclaw/agent/builtin_tools.py | 1225 | CODE | |
| LOW | vulnclaw/agent/builtin_tools.py | 2082 | CODE | |
| LOW | vulnclaw/agent/skill_context.py | 86 | CODE | |
| LOW | vulnclaw/agent/reasoning_state.py | 232 | CODE | |
| LOW | vulnclaw/agent/agent_graph.py | 158 | CODE | |
| LOW | vulnclaw/agent/parallel_agents.py | 235 | CODE | |
| LOW | vulnclaw/agent/subagent/service.py | 293 | CODE | |
| LOW | vulnclaw/agent/subagent/service.py | 645 | CODE | |
| LOW | vulnclaw/agent/subagent/merge.py | 374 | CODE | |
| LOW | vulnclaw/agent/subagent/budget.py | 146 | CODE | |
| LOW | vulnclaw/agent/subagent/integration.py | 312 | CODE | |
| LOW | vulnclaw/agent/subagent/solve.py | 119 | CODE | |
| LOW | vulnclaw/mcp/diagnostics.py | 16 | CODE | |
| LOW | vulnclaw/mcp/lifecycle.py | 282 | CODE | |
| LOW | vulnclaw/cli/tui.py | 490 | CODE | |
| LOW | vulnclaw/cli/tui.py | 778 | CODE | |
| LOW | vulnclaw/cli/tui.py | 1334 | CODE | |
| LOW | vulnclaw/cli/tui.py | 2571 | CODE | |
| LOW | vulnclaw/cli/tui.py | 507 | CODE | |
| 6 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | vulnclaw/run_context.py | 117 | def update_manifest(self, **updates: Any) -> None: | CODE |
| LOW | vulnclaw/traffic/__init__.py | 27 | __all__ = [ | CODE |
| LOW | vulnclaw/intel/remediation.py | 42 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | vulnclaw/kb/retriever.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | vulnclaw/kb/__init__.py | 10 | __all__ = [ | CODE |
| LOW | vulnclaw/config/settings.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | vulnclaw/config/settings.py | 147 | def set_config_value(key: str, value: str) -> None: | CODE |
| LOW | vulnclaw/plugins/__init__.py | 33 | __all__ = [ | CODE |
| LOW | vulnclaw/plugins/web/__init__.py | 14 | __all__ = [ | CODE |
| LOW | vulnclaw/web/__init__.py | 7 | __all__ = ["__version__"] | CODE |
| LOW | vulnclaw/web/task_manager.py | 61 | def set_restoring(self, task_id: str, *, snapshot_id: str | None = None) -> None: | CODE |
| LOW | vulnclaw/web/task_manager.py | 70 | def set_running(self, task_id: str) -> None: | CODE |
| LOW | vulnclaw/web/task_manager.py | 93 | def set_failed(self, task_id: str, error: str) -> None: | CODE |
| LOW | vulnclaw/web/task_manager.py | 101 | def set_stopped(self, task_id: str) -> None: | CODE |
| LOW | vulnclaw/agent/constraint_policy.py | 19 | __all__ = [ | CODE |
| LOW | vulnclaw/agent/kb_context.py | 43 | logger = logging.getLogger(__name__) | CODE |
| LOW | vulnclaw/agent/think_filter.py | 13 | __all__ = ["strip_think_tags", "format_think_tags"] | CODE |
| LOW | vulnclaw/agent/tool_call_manager.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | vulnclaw/agent/context_vault.py | 289 | def set_output_dir(self, output_dir: Path | None) -> None: | CODE |
| LOW | vulnclaw/agent/agent_state.py | 607 | def update_context_digest(self, summary: str, evidence_ids: list[str]) -> None: | CODE |
| LOW | vulnclaw/agent/__init__.py | 12 | __all__ = [ | CODE |
| LOW | vulnclaw/agent/core.py | 734 | def _update_recon_dimension_completion(self, response: str) -> None: | CODE |
| LOW | vulnclaw/agent/team.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | vulnclaw/agent/context.py | 43 | logger = logging.getLogger(__name__) | CODE |
| LOW | vulnclaw/agent/context.py | 1032 | def set_save_path(self, path: Path) -> None: | CODE |
| LOW | vulnclaw/agent/llm_client.py | 37 | logger = logging.getLogger(__name__) | CODE |
| LOW | vulnclaw/agent/recon_tracker.py | 140 | def update_recon_dimension_completion(agent: AgentContext, response: str) -> None: | CODE |
| LOW⚡ | vulnclaw/agent/agent_context.py | 130 | def _update_recon_dimension_completion(self, response: str) -> None: | CODE |
| LOW | vulnclaw/agent/finding_similarity.py | 23 | __all__ = [ | CODE |
| LOW | vulnclaw/agent/agent_graph.py | 37 | logger = logging.getLogger(__name__) | CODE |
| LOW | vulnclaw/agent/subagent/integration.py | 34 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | vulnclaw/mcp/registry.py | 79 | def set_server_running(self, name: str, running: bool, pid: Optional[int] = None) -> None: | CODE |
| LOW⚡ | vulnclaw/mcp/registry.py | 89 | def set_server_execution_mode(self, name: str, mode: str) -> None: | CODE |
| LOW⚡ | vulnclaw/mcp/registry.py | 94 | def set_server_health(self, name: str, health_status: str) -> None: | CODE |
| LOW⚡ | vulnclaw/mcp/registry.py | 99 | def set_server_attach_result(self, name: str, attempted: bool, succeeded: bool) -> None: | CODE |
| LOW⚡ | vulnclaw/mcp/registry.py | 105 | def set_server_error(self, name: str, error: str, error_type: str | None = None) -> None: | CODE |
| LOW | vulnclaw/mcp/registry.py | 140 | def set_last_call_latency(self, name: str, latency_ms: float) -> None: | CODE |
| LOW | vulnclaw/mcp/lifecycle.py | 133 | def set_task_constraints(self, constraints: Any) -> None: | CODE |
| LOW⚡ | vulnclaw/cli/tui.py | 750 | def _set_prompt_input(session: dict[str, Any], label: str, callback: PromptCallback, default: str = "") -> None: | CODE |
| LOW⚡ | vulnclaw/cli/tui.py | 754 | def _set_prompt_choice(session: dict[str, Any], label: str, choices: list[str], callback: PromptCallback) -> None: | CODE |
| LOW⚡ | vulnclaw/cli/tui.py | 758 | def _set_prompt_confirm(session: dict[str, Any], label: str, callback: Callable[[bool], None]) -> None: | CODE |
| LOW⚡ | vulnclaw/cli/tui.py | 762 | def _set_prompt_message(session: dict[str, Any], text: str) -> None: | CODE |
| LOW⚡ | vulnclaw/cli/tui.py | 766 | def _set_prompt_chain(session: dict[str, Any], fields: list, idx: int, callback: Callable[[], None]) -> None: | CODE |
| LOW | vulnclaw/cli/tui.py | 59 | logger = logging.getLogger(__name__) | CODE |
| LOW | vulnclaw/report/__init__.py | 25 | __all__ = [ | CODE |
| LOW | vulnclaw/report/generator.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | vulnclaw/report/verifier.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW | vulnclaw/skills/crypto_tools.py | 24 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | vulnclaw/intel/remediation_rules.py | 662 | sudo apt update && sudo apt upgrade -y | CODE |
| HIGH | vulnclaw/agent/builtin_tools.py | 1013 | return f"[!] 工具 {tool_name} 返回空结果 (undefined),调用可能失败" | CODE |
| HIGH | vulnclaw/skills/loader.py | 195 | # gate. Any other value (missing, null, 0, "false", …) keeps | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | CONTRIBUTING_EN.md | 17 | | |-- orchestrator.py # Shared task orchestration for CLI / Web | CODE |
| MEDIUM⚡ | tests/config/test_config.py | 170 | # Upper bounds are DoS guardrails: e.g. max_concurrent=100000 must be | COMMENT |
| MEDIUM | …ized/rapid-checklist/references/testing-methodology.md | 550 | > 官方地址: https://genai.owasp.org/resource/agentic-ai/ | CODE |
| MEDIUM | …curity/references/04-ai-and-mcp-security-integrated.md | 5439 | https://allabouttesting.org/owasp-agentic-ai-threat-t9-identity-spoofing-impersonation-in-ai-systems/ | CODE |
| MEDIUM | …zed/ai-mcp-security/references/ai-identity-security.md | 462 | https://allabouttesting.org/owasp-agentic-ai-threat-t9-identity-spoofing-impersonation-in-ai-systems/ | CODE |
| MEDIUM | …d/secknowledge-skill/references/testing-methodology.md | 550 | > 官方地址: https://genai.owasp.org/resource/agentic-ai/ | CODE |
| MEDIUM | …lized/secknowledge-skill/references/ai-identity-app.md | 460 | https://allabouttesting.org/owasp-agentic-ai-threat-t9-identity-spoofing-impersonation-in-ai-systems/ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | tests/test_context_budget.py | 80 | assert agent.context.state.agent_state.context_digest.summary.startswith("[context digest v1]") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/mcp/test_mcp.py | 332 | assert any(item.execution_mode in {"placeholder", "local"} for item in view.services) | CODE |
| LOW | tests/mcp/test_mcp.py | 383 | assert state.execution_mode == "placeholder" | CODE |
| LOW | vulnclaw/agent/core.py | 352 | api_key=token or "placeholder", | CODE |
| LOW | vulnclaw/mcp/registry.py | 44 | execution_mode: str = "placeholder" # local/sdk/subprocess/sse/placeholder | CODE |
| LOW | vulnclaw/mcp/diagnostics.py | 29 | execution_mode = state.execution_mode if state else "placeholder" | CODE |
| LOW | vulnclaw/mcp/diagnostics.py | 36 | elif execution_mode == "placeholder": | CODE |
| LOW | vulnclaw/mcp/lifecycle.py | 330 | self.registry.set_server_execution_mode(name, "sdk" if attached else "placeholder") | CODE |
| LOW | vulnclaw/mcp/lifecycle.py | 344 | self.registry.set_server_execution_mode(name, "sse" if attached else "placeholder") | CODE |
| LOW | vulnclaw/mcp/lifecycle.py | 358 | self.registry.set_server_execution_mode(name, "http" if attached else "placeholder") | CODE |
| LOW | vulnclaw/cli/main.py | 298 | if srv_state.health_status in ("degraded", "unavailable") and srv_state.execution_mode in ("placeholder",): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/kb/test_kb.py | 116 | # Create a new store loading from the same dir | COMMENT |
| MEDIUM | tests/agent/test_agent.py | 613 | # Create a new store instance pointing to the same dir | COMMENT |
| MEDIUM | vulnclaw/agent/team.py | 227 | # Create a minimal error result so the wave can continue | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | vulnclaw/orchestrator.py | 40 | CODE | |
| LOW | vulnclaw/config/finding_similarity.py | 149 | CODE | |
| LOW | vulnclaw/agent/subagent/service.py | 82 | CODE | |
| LOW | vulnclaw/cli/tui.py | 332 | CODE | |
| LOW | vulnclaw/report/filter.py | 156 | CODE | |
| LOW | vulnclaw/report/filter.py | 230 | CODE | |
| LOW | vulnclaw/report/filter.py | 244 | CODE | |
| LOW | vulnclaw/report/filter.py | 266 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | vulnclaw/agent/llm_client.py | 428 | Keep retrying retriable LLM calls until success, max retries, or manual interruption. Args: max_retries: Ma | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | vulnclaw/agent/builtin_tools.py | 2151 | # Step 1: Get login page for initial CSRF and session | COMMENT |
| LOW | vulnclaw/agent/builtin_tools.py | 2181 | # Step 2: Try each password | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | vulnclaw/skills/dispatcher.py | 77 | # Full/deep recon — trigger osint-recon for comprehensive 4-dimension collection | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | vulnclaw/cli/main.py | 3177 | # Check if user specified a path | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …lized/ctf-crypto/references/lattice-and-lwe-attacks.md | 81 | COMMENT |