Open-source AI penetration testing tool to find and fix your app’s vulnerabilities.
This report presents the forensic synthetic code analysis of usestrix/strix, a Python project with 41,321 GitHub stars. SynthScan v2.0 examined 33,306 lines of code across 179 source files, recording 528 pattern matches distributed across 13 syntactic categories. The overall adjusted score of 19.4 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 528 distinct pattern matches across 13 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 | strix/interface/utils.py | 62 | def format_vulnerability_report(report: dict[str, Any]) -> Text: # noqa: PLR0915 | CODE |
| LOW | strix/interface/utils.py | 210 | def _build_vulnerability_stats(stats_text: Text, report_state: Any) -> None: | CODE |
| LOW | strix/interface/utils.py | 413 | def _derive_target_label_for_run_name(targets_info: list[dict[str, Any]] | None) -> str: # noqa: PLR0911 | CODE |
| LOW | strix/interface/utils.py | 633 | def _resolve_default_branch_name(repo_path: Path, env: dict[str, str]) -> str | None: | CODE |
| LOW | strix/interface/utils.py | 807 | def build_diff_scope_instruction(scopes: list[RepoDiffScope]) -> str: | CODE |
| LOW | strix/interface/utils.py | 876 | def _should_activate_auto_scope( | CODE |
| LOW | strix/interface/utils.py | 969 | def resolve_diff_scope_context( | CODE |
| LOW | strix/interface/utils.py | 1276 | def find_oversized_local_targets( | CODE |
| LOW | strix/interface/utils.py | 1379 | def rewrite_localhost_targets(targets_info: list[dict[str, Any]], host_gateway: str) -> None: | CODE |
| LOW | strix/interface/main.py | 723 | def display_completion_message(args: argparse.Namespace, results_path: Path) -> None: | CODE |
| LOW | strix/interface/tui/live_view.py | 50 | def _hydrate_sdk_session_history(self, run_dir: Path, agent_ids: Any) -> None: | CODE |
| LOW | strix/interface/tui/live_view.py | 123 | def _ingest_raw_response_event(self, agent_id: str, data: Any) -> None: | CODE |
| LOW | strix/interface/tui/live_view.py | 130 | def _ingest_session_history_item( | CODE |
| LOW | strix/interface/tui/live_view.py | 177 | def _record_assistant_message(self, agent_id: str, content: str, *, final: bool) -> None: | CODE |
| LOW | strix/interface/tui/messages.py | 13 | def send_user_message_to_agent( | CODE |
| LOW | strix/interface/tui/app.py | 178 | def _build_model_warning_text(model: str) -> Text: | CODE |
| LOW | strix/interface/tui/app.py | 1116 | def _get_chat_placeholder_content( | CODE |
| LOW | strix/interface/tui/app.py | 1175 | def _get_rendered_events_content(self, events: list[dict[str, Any]]) -> Any: | CODE |
| LOW | strix/interface/tui/app.py | 1202 | def _get_status_display_content( | CODE |
| LOW | strix/interface/tui/app.py | 1256 | def _update_agent_status_display(self) -> None: | CODE |
| LOW | strix/interface/tui/app.py | 1315 | def _update_vulnerabilities_panel(self) -> None: | CODE |
| LOW | strix/interface/tui/app.py | 1423 | def _agent_vulnerability_count(self, agent_id: str) -> int: | CODE |
| LOW | strix/interface/tui/app.py | 1600 | def _reorganize_orphaned_agents(self, new_parent_id: str) -> None: | CODE |
| LOW | strix/interface/tui/app.py | 1665 | def handle_tree_node_selected(self, event: Tree.NodeSelected) -> None: | CODE |
| LOW | strix/interface/tui/app.py | 1751 | def action_stop_selected_agent(self) -> None: | CODE |
| LOW | strix/interface/tui/app.py | 1773 | def _validate_agent_for_stopping(self) -> tuple[str, bool]: | CODE |
| LOW | strix/interface/tui/app.py | 1796 | def action_confirm_stop_agent(self, agent_id: str) -> None: | CODE |
| LOW | strix/interface/tui/renderers/registry.py | 42 | def _render_default_tool_widget(tool_data: dict[str, Any]) -> Static: | CODE |
| LOW | strix/interface/tui/renderers/agent_message_renderer.py | 120 | def _process_inline_formatting(line: str) -> Text: | CODE |
| LOW | strix/tools/reporting/tool.py | 51 | def _normalize_code_locations( | CODE |
| LOW | strix/tools/reporting/tool.py | 322 | async def create_vulnerability_report( | CODE |
| LOW | strix/tools/reporting/tool.py | 637 | def _build_dependency_metadata( | CODE |
| LOW | strix/tools/reporting/tool.py | 655 | def _build_dependency_evidence( | CODE |
| LOW | strix/tools/proxy/tools.py | 393 | def _format_replay_tool_result(replay: dict[str, Any]) -> str: | CODE |
| LOW | strix/tools/proxy/caido_api.py | 102 | async def list_requests_with_client( | CODE |
| LOW | strix/tools/proxy/caido_api.py | 529 | def _clean_sitemap_request_summary(req: dict[str, Any] | None) -> dict[str, Any] | None: | STRING |
| LOW | strix/tools/proxy/caido_api.py | 609 | async def view_sitemap_entry_with_client( | CODE |
| LOW | strix/tools/agents_graph/tools.py | 29 | def _render_completion_report( | CODE |
| LOW | strix/core/sessions.py | 26 | async def strip_all_images_from_session(session: Session) -> bool: | CODE |
| LOW | strix/core/runner.py | 55 | def _merge_root_prompt_context( | CODE |
| LOW | strix/core/runner.py | 70 | def _compose_root_instructions_override( | CODE |
| LOW | strix/core/execution.py | 266 | async def _run_noninteractive_until_lifecycle( | CODE |
| LOW | strix/core/execution.py | 471 | async def _append_noninteractive_tool_required_message( | CODE |
| LOW | strix/core/agents.py | 206 | async def cancel_descendants_graceful(self, agent_id: str) -> None: | CODE |
| LOW | strix/core/inputs.py | 25 | def _accepts_required_tool_choice(model_name: str | None) -> bool: | CODE |
| LOW | strix/config/models.py | 99 | def configure_sdk_model_defaults(settings: Settings) -> None: | CODE |
| LOW | strix/config/models.py | 117 | def _mirror_api_key_to_provider_env(model_name: str | None, api_key: str) -> None: | CODE |
| LOW | strix/config/models.py | 136 | def _configure_litellm_compatibility() -> None: | CODE |
| LOW | strix/config/models.py | 158 | def _configure_openrouter_attribution(model_name: str | None) -> None: | CODE |
| LOW | strix/config/models.py | 174 | def _register_litellm_cost_callback() -> None: | CODE |
| LOW | strix/config/models.py | 188 | def _configure_litellm_default(name: str, value: str) -> None: | CODE |
| LOW | strix/config/models.py | 195 | def uses_chat_completions_tool_schema(model_name: str, settings: Settings) -> bool: | CODE |
| LOW | strix/config/models.py | 219 | def is_recommended_or_frontier_model(model_name: str) -> bool: | CODE |
| LOW | strix/config/models.py | 281 | def _contains_provider_marker( | CODE |
| LOW | strix/config/models.py | 291 | def is_known_openai_bare_model(model_name: str) -> bool: | CODE |
| LOW⚡ | strix/agents/factory.py | 110 | def _function_tool_with_error_result(tool: FunctionTool) -> FunctionTool: | CODE |
| LOW⚡ | strix/agents/factory.py | 124 | def _custom_tool_as_function_tool(tool: CustomTool) -> FunctionTool: | CODE |
| LOW | strix/agents/factory.py | 162 | def _configure_chat_completions_filesystem_tools(toolset: Any) -> None: | CODE |
| LOW | strix/agents/factory.py | 269 | def _lifecycle_tool_completed(tool_name: str, output: Any) -> bool: | CODE |
| LOW | strix/agents/factory.py | 300 | def _finish_tool_use_behavior( | CODE |
| 180 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | strix/interface/__init__.py | 1 | CODE | |
| LOW | strix/interface/tui/live_view.py | 3 | CODE | |
| LOW | strix/interface/tui/__init__.py | 3 | CODE | |
| LOW | strix/interface/tui/__init__.py | 3 | CODE | |
| LOW | strix/interface/tui/messages.py | 3 | CODE | |
| LOW | strix/interface/tui/history.py | 3 | CODE | |
| LOW | strix/interface/tui/renderers/__init__.py | 1 | CODE | |
| LOW | strix/interface/tui/renderers/__init__.py | 1 | CODE | |
| LOW | strix/interface/tui/renderers/__init__.py | 1 | CODE | |
| LOW | strix/interface/tui/renderers/__init__.py | 1 | CODE | |
| LOW | strix/interface/tui/renderers/__init__.py | 1 | CODE | |
| LOW | strix/interface/tui/renderers/__init__.py | 1 | CODE | |
| LOW | strix/interface/tui/renderers/__init__.py | 1 | CODE | |
| LOW | strix/interface/tui/renderers/__init__.py | 1 | CODE | |
| LOW | strix/interface/tui/renderers/__init__.py | 1 | CODE | |
| LOW | strix/interface/tui/renderers/__init__.py | 1 | CODE | |
| LOW | strix/interface/tui/renderers/__init__.py | 1 | CODE | |
| LOW | strix/interface/tui/renderers/__init__.py | 14 | CODE | |
| LOW | strix/interface/tui/renderers/filesystem_renderer.py | 1 | CODE | |
| LOW | strix/tools/reporting/tool.py | 3 | CODE | |
| LOW | strix/tools/web_search/tool.py | 3 | CODE | |
| LOW | strix/tools/proxy/tools.py | 3 | CODE | |
| LOW | strix/tools/proxy/caido_api.py | 3 | CODE | |
| LOW | strix/tools/todo/tools.py | 3 | CODE | |
| LOW | strix/tools/notes/tools.py | 3 | CODE | |
| LOW | strix/tools/thinking/tool.py | 3 | CODE | |
| LOW | strix/tools/finish/tool.py | 3 | CODE | |
| LOW | strix/tools/load_skill/tool.py | 3 | CODE | |
| LOW | strix/tools/agents_graph/tools.py | 3 | CODE | |
| LOW | strix/core/sessions.py | 3 | CODE | |
| LOW | strix/core/sessions.py | 14 | CODE | |
| LOW | strix/core/runner.py | 3 | CODE | |
| LOW | strix/core/hooks.py | 3 | CODE | |
| LOW | strix/core/execution.py | 3 | CODE | |
| LOW | strix/core/execution.py | 26 | CODE | |
| LOW | strix/core/paths.py | 3 | CODE | |
| LOW | strix/core/agents.py | 3 | CODE | |
| LOW | strix/core/inputs.py | 3 | CODE | |
| LOW | strix/config/models.py | 3 | CODE | |
| LOW | strix/config/__init__.py | 14 | CODE | |
| LOW | strix/config/__init__.py | 14 | CODE | |
| LOW | strix/config/__init__.py | 14 | CODE | |
| LOW | strix/config/__init__.py | 19 | CODE | |
| LOW | strix/config/__init__.py | 19 | CODE | |
| LOW | strix/config/__init__.py | 19 | CODE | |
| LOW | strix/config/__init__.py | 19 | CODE | |
| LOW | strix/config/__init__.py | 19 | CODE | |
| LOW | strix/config/loader.py | 3 | CODE | |
| LOW | strix/config/settings.py | 3 | CODE | |
| LOW | strix/runtime/session_manager.py | 3 | CODE | |
| LOW | strix/runtime/backends.py | 3 | CODE | |
| LOW | strix/runtime/docker_client.py | 23 | CODE | |
| LOW | strix/runtime/caido_bootstrap.py | 10 | CODE | |
| LOW | strix/agents/factory.py | 3 | CODE | |
| LOW | strix/agents/prompt.py | 3 | CODE | |
| LOW | strix/report/dedupe.py | 3 | CODE | |
| LOW | strix/report/__init__.py | 3 | CODE | |
| LOW | strix/report/__init__.py | 4 | CODE | |
| LOW | strix/report/__init__.py | 4 | CODE | |
| LOW | strix/report/__init__.py | 4 | CODE | |
| 31 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pyproject.toml | 78 | # ============================================================================ | COMMENT |
| MEDIUM | pyproject.toml | 80 | # ============================================================================ | COMMENT |
| MEDIUM | pyproject.toml | 122 | # ============================================================================ | COMMENT |
| MEDIUM | pyproject.toml | 124 | # ============================================================================ | COMMENT |
| MEDIUM | pyproject.toml | 264 | # ============================================================================ | COMMENT |
| MEDIUM | pyproject.toml | 266 | # ============================================================================ | COMMENT |
| MEDIUM | pyproject.toml | 294 | # ============================================================================ | COMMENT |
| MEDIUM | pyproject.toml | 296 | # ============================================================================ | COMMENT |
| MEDIUM | pyproject.toml | 316 | # ============================================================================ | STRING |
| MEDIUM | pyproject.toml | 318 | # ============================================================================ | STRING |
| MEDIUM | pyproject.toml | 331 | # ============================================================================ | STRING |
| MEDIUM | pyproject.toml | 333 | # ============================================================================ | STRING |
| MEDIUM⚡ | strix/report/sarif.py | 362 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | strix/report/sarif.py | 364 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | strix/report/sarif.py | 1012 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | strix/report/sarif.py | 1014 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | strix/report/sarif.py | 192 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | strix/report/sarif.py | 194 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | strix/report/sarif.py | 404 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | strix/report/sarif.py | 406 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | strix/report/sarif.py | 612 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | strix/report/sarif.py | 614 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | strix/report/sarif.py | 719 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | strix/report/sarif.py | 721 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | strix/report/sarif.py | 975 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | strix/report/sarif.py | 977 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | strix/report/sarif.py | 1030 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | strix/report/sarif.py | 1032 | # --------------------------------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | strix/interface/cli.py | 167 | except Exception: | CODE |
| LOW | strix/interface/cli.py | 194 | except Exception as e: | CODE |
| LOW | strix/interface/utils.py | 427 | except Exception: | CODE |
| LOW | strix/interface/utils.py | 443 | except Exception: | CODE |
| LOW | strix/interface/main.py | 355 | except Exception as e: | CODE |
| LOW | strix/interface/main.py | 386 | except Exception: | CODE |
| LOW | strix/interface/main.py | 580 | except Exception as e: | STRING |
| LOW | strix/interface/main.py | 926 | except Exception: | CODE |
| MEDIUM | strix/interface/main.py | 381 | def get_version() -> str: | CODE |
| LOW | strix/interface/tui/messages.py | 39 | except Exception: | CODE |
| MEDIUM | strix/interface/tui/app.py | 1256 | def _update_agent_status_display(self) -> None: | CODE |
| LOW | strix/interface/tui/app.py | 126 | except Exception: | CODE |
| LOW | strix/interface/tui/app.py | 1010 | except Exception: | CODE |
| LOW | strix/interface/tui/app.py | 1113 | except Exception: | CODE |
| LOW | strix/interface/tui/app.py | 1483 | except Exception as e: | CODE |
| LOW | strix/interface/tui/app.py | 1494 | except Exception: | CODE |
| LOW | strix/interface/tui/app.py | 1931 | except Exception: | CODE |
| LOW | strix/interface/tui/app.py | 1942 | except Exception: | CODE |
| LOW | strix/tools/reporting/tool.py | 135 | except Exception: | CODE |
| LOW | strix/tools/web_search/tool.py | 107 | except Exception: | CODE |
| LOW | strix/tools/proxy/tools.py | 54 | except Exception: # noqa: BLE001 | CODE |
| LOW | strix/tools/proxy/tools.py | 209 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | strix/tools/proxy/tools.py | 288 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | strix/tools/proxy/tools.py | 389 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | strix/tools/proxy/tools.py | 452 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | strix/tools/proxy/tools.py | 477 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | strix/tools/proxy/tools.py | 595 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | strix/tools/proxy/caido_api.py | 208 | except Exception: # noqa: BLE001 - tolerate any malformed raw bytes; None signals "unparseable" to the caller. | CODE |
| LOW | strix/tools/todo/tools.py | 99 | except Exception: | CODE |
| LOW | strix/tools/notes/tools.py | 90 | except Exception: | CODE |
| LOW | strix/tools/agents_graph/tools.py | 440 | except Exception as e: | CODE |
| LOW | strix/core/sessions.py | 61 | except Exception: | CODE |
| LOW | strix/core/hooks.py | 64 | except Exception: | CODE |
| LOW | strix/core/execution.py | 260 | except Exception: | CODE |
| LOW | strix/core/execution.py | 368 | except Exception: | CODE |
| LOW | strix/core/execution.py | 400 | except Exception as exc: | CODE |
| LOW | strix/core/execution.py | 408 | except Exception: | CODE |
| LOW | strix/core/agents.py | 141 | except Exception: | CODE |
| LOW | strix/core/agents.py | 317 | except Exception: | CODE |
| LOW | strix/config/models.py | 129 | except Exception: # noqa: BLE001 | CODE |
| LOW | strix/runtime/session_manager.py | 154 | except Exception: # noqa: BLE001 | CODE |
| LOW | strix/runtime/session_manager.py | 160 | except Exception: | CODE |
| LOW⚡ | strix/agents/factory.py | 116 | except Exception as exc: # noqa: BLE001 - tool errors should be model-visible results. | CODE |
| LOW⚡ | strix/agents/factory.py | 131 | except Exception as exc: # noqa: BLE001 - matches SDK CustomTool error-as-result behavior. | CODE |
| LOW | strix/agents/prompt.py | 97 | except Exception: | CODE |
| LOW | strix/report/dedupe.py | 348 | except Exception as e: | CODE |
| LOW | strix/report/usage.py | 97 | except Exception: | CODE |
| LOW | strix/report/usage.py | 111 | except Exception: | CODE |
| LOW | strix/report/usage.py | 209 | except Exception: # nosec B112 # noqa: BLE001, S112 | CODE |
| LOW | strix/report/state.py | 437 | except Exception: | CODE |
| LOW | strix/report/state.py | 555 | except Exception: | CODE |
| LOW | strix/skills/custom/source_aware_sast.md | 39 | except Exception: | CODE |
| LOW | strix/telemetry/_common.py | 38 | except Exception: # noqa: BLE001, S110 | CODE |
| MEDIUM | strix/telemetry/_common.py | 19 | def get_version() -> str: | CODE |
| LOW | strix/telemetry/posthog.py | 47 | except Exception: # noqa: BLE001 | CODE |
| LOW | strix/telemetry/scarf.py | 48 | except Exception: # noqa: BLE001 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | strix/interface/__init__.py | 4 | __all__ = ["main"] | CODE |
| LOW | strix/interface/cli.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/interface/cli.py | 162 | def update_status() -> None: | CODE |
| LOW | strix/interface/utils.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/interface/utils.py | 1512 | def update_layer_status(layers_info: dict[str, str], layer_id: str, layer_status: str) -> None: | CODE |
| LOW | strix/interface/main.py | 76 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/interface/tui/__init__.py | 6 | __all__ = ["StrixTUIApp", "run_tui"] | CODE |
| LOW | strix/interface/tui/messages.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/interface/tui/app.py | 47 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/interface/tui/app.py | 62 | def set_app_reference(self, app: "StrixTUIApp") -> None: | CODE |
| LOW | strix/interface/tui/app.py | 88 | def _update_height(self, _event: TextArea.Changed | None = None) -> None: | CODE |
| LOW | strix/interface/tui/app.py | 684 | def update_vulnerabilities(self, vulnerabilities: list[dict[str, Any]]) -> None: | CODE |
| LOW | strix/interface/tui/app.py | 834 | def _setup_cleanup_handlers(self) -> None: | CODE |
| LOW | strix/interface/tui/app.py | 961 | def _update_ui(self) -> None: | CODE |
| LOW | strix/interface/tui/app.py | 1080 | def _update_chat_view(self) -> None: | CODE |
| LOW | strix/interface/tui/app.py | 1256 | def _update_agent_status_display(self) -> None: | CODE |
| LOW | strix/interface/tui/app.py | 1292 | def _update_stats_display(self) -> None: | CODE |
| LOW | strix/interface/tui/app.py | 1315 | def _update_vulnerabilities_panel(self) -> None: | CODE |
| LOW | strix/interface/tui/history.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/interface/tui/renderers/__init__.py | 17 | __all__ = [ | CODE |
| LOW | strix/tools/reporting/tool.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/tools/web_search/tool.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/tools/proxy/tools.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/tools/proxy/caido_api.py | 668 | __all__ = [ | CODE |
| LOW | strix/tools/todo/tools.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/tools/notes/tools.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/tools/finish/tool.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/tools/agents_graph/tools.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/core/runner.py | 50 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/core/hooks.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/core/execution.py | 34 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/core/agents.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/core/agents.py | 48 | def set_snapshot_path(self, path: Path) -> None: | CODE |
| LOW | strix/core/agents.py | 113 | async def set_status(self, agent_id: str, status: Status | str) -> None: | CODE |
| LOW | strix/config/__init__.py | 28 | __all__ = [ | CODE |
| LOW | strix/config/loader.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/runtime/session_manager.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/runtime/backends.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/runtime/docker_client.py | 46 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/runtime/caido_bootstrap.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/agents/factory.py | 64 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/agents/prompt.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/report/dedupe.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/report/__init__.py | 7 | __all__ = [ | CODE |
| LOW | strix/report/sarif.py | 56 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/report/writer.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/report/usage.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/report/state.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/report/state.py | 93 | def set_global_report_state(report_state: "ReportState") -> None: | CODE |
| LOW | strix/report/state.py | 353 | def set_scan_config(self, config: dict[str, Any]) -> None: | CODE |
| LOW | strix/skills/__init__.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/telemetry/logging.py | 22 | def set_scan_id(scan_id: str) -> None: | CODE |
| LOW | strix/telemetry/logging.py | 27 | def set_agent_id(agent_id: str | None) -> None: | CODE |
| LOW | strix/telemetry/_common.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/telemetry/__init__.py | 4 | __all__ = [ | CODE |
| LOW | strix/telemetry/posthog.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | strix/telemetry/scarf.py | 22 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | strix/interface/cli.py | 38 | CODE | |
| LOW | strix/interface/utils.py | 62 | CODE | |
| LOW | strix/interface/utils.py | 807 | CODE | |
| LOW | strix/interface/utils.py | 1248 | CODE | |
| LOW | strix/interface/utils.py | 1379 | CODE | |
| LOW | strix/interface/utils.py | 1512 | CODE | |
| LOW | strix/interface/utils.py | 1525 | CODE | |
| LOW | strix/interface/main.py | 79 | CODE | |
| LOW | strix/interface/main.py | 402 | CODE | |
| LOW | strix/interface/tui/app.py | 202 | CODE | |
| LOW | strix/interface/tui/app.py | 332 | CODE | |
| LOW | strix/interface/tui/app.py | 524 | CODE | |
| LOW | strix/interface/tui/app.py | 997 | CODE | |
| LOW | strix/interface/tui/app.py | 1159 | CODE | |
| LOW | strix/interface/tui/renderers/proxy_renderer.py | 44 | CODE | |
| LOW | strix/interface/tui/renderers/proxy_renderer.py | 121 | CODE | |
| LOW | strix/interface/tui/renderers/proxy_renderer.py | 208 | CODE | |
| LOW | strix/interface/tui/renderers/proxy_renderer.py | 306 | CODE | |
| LOW | strix/interface/tui/renderers/proxy_renderer.py | 390 | CODE | |
| LOW | strix/interface/tui/renderers/proxy_renderer.py | 455 | CODE | |
| LOW | strix/interface/tui/renderers/reporting_renderer.py | 89 | CODE | |
| LOW | strix/interface/tui/renderers/filesystem_renderer.py | 82 | CODE | |
| LOW | strix/interface/tui/renderers/notes_renderer.py | 98 | CODE | |
| LOW | strix/interface/tui/renderers/agent_message_renderer.py | 64 | CODE | |
| LOW | strix/interface/tui/renderers/agent_message_renderer.py | 120 | CODE | |
| LOW | strix/tools/reporting/tool.py | 51 | CODE | |
| LOW | strix/tools/reporting/tool.py | 81 | CODE | |
| LOW | strix/tools/proxy/tools.py | 87 | CODE | |
| LOW | strix/tools/proxy/caido_api.py | 246 | CODE | |
| LOW | strix/tools/proxy/caido_api.py | 427 | CODE | |
| LOW | strix/tools/notes/tools.py | 241 | CODE | |
| LOW | strix/core/runner.py | 101 | CODE | |
| LOW | strix/core/execution.py | 334 | CODE | |
| LOW | strix/core/inputs.py | 34 | CODE | |
| LOW | strix/config/loader.py | 56 | CODE | |
| LOW | strix/config/loader.py | 92 | CODE | |
| LOW | strix/runtime/caido_bootstrap.py | 33 | CODE | |
| LOW | strix/report/writer.py | 119 | CODE | |
| LOW | strix/skills/__init__.py | 52 | CODE | |
| LOW | strix/telemetry/logging.py | 92 | CODE | |
| LOW | strix/telemetry/logging.py | 147 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | README.md | 86 | export LLM_API_KEY="your-api-key" | CODE |
| HIGH | README.md | 234 | export LLM_API_KEY="your-api-key" | CODE |
| HIGH | README.md | 238 | export PERPLEXITY_API_KEY="your-api-key" # for search capabilities | CODE |
| HIGH | CONTRIBUTING.md | 34 | export LLM_API_KEY="your-api-key" | CODE |
| HIGH | strix/interface/main.py | 166 | "export LLM_API_KEY='your-api-key-here' " | CODE |
| HIGH | scripts/install.sh | 339 | echo -e " ${MUTED}export LLM_API_KEY='your-api-key'${NC}" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | strix/skills/vulnerabilities/llm_prompt_injection.md | 105 | ### LlamaIndex / RAG Pipelines | COMMENT |
| MEDIUM | strix/skills/vulnerabilities/llm_prompt_injection.md | 124 | ### RAG Poisoning | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | strix/tools/proxy/tools.py | 96 | List captured HTTP requests from the Caido proxy with HTTPQL filtering. Caido HTTPQL syntax (operators differ by fi | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pyproject.toml | 140 | # Enable comprehensive rule sets | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | strix/tools/proxy/caido_api.py | 292 | # Create an empty replay session, then dispatch via ``send()``. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | strix/core/runner.py | 101 | CODE | |
| LOW | strix/agents/factory.py | 395 | CODE | |
| LOW | strix/report/state.py | 208 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | strix/skills/tooling/agent_browser.md | 181 | agent-browser fill @e3 "user@example.com" | CODE |