Cybersecurity AI (CAI), the framework for AI Security
This report presents the forensic synthetic code analysis of aliasrobotics/cai, a Python project with 9,814 GitHub stars. SynthScan v2.0 examined 313,541 lines of code across 1416 source files, recording 8328 pattern matches distributed across 24 syntactic categories. The overall adjusted score of 34.8 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 8328 distinct pattern matches across 24 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 | tools/vm_to_docker.py | 130 | def mount_and_extract_filesystem(self, raw_path: Path) -> Path: | CODE |
| LOW | tools/vm_to_docker.py | 205 | def create_dockerfile_from_template(self, detected_os: str = "ubuntu") -> Path: | CODE |
| LOW | tools/vm_to_docker.py | 294 | def create_dockerfile_from_filesystem(self, fs_dir: Path) -> Path: | CODE |
| LOW | tools/logs.py | 140 | def create_system_distribution(self) -> Optional[str]: | CODE |
| LOW | tools/license_check.py | 262 | def validate_encrypted_api_key() -> bool: | CODE |
| LOW | tools/case_study_generator.py | 206 | async def process_streamed_response(): | CODE |
| LOW | tools/cut_the_rope/benchmark/graph_sample.py | 234 | def run_ctr_baseline_analysis(graph_structure, edge_probabilities, save_path, attack_rate_list=None, defense_rate_list=N | CODE |
| LOW | tests/conftest.py | 21 | def restore_cai_tracing_env_after_each_test(): | CODE |
| LOW | tests/conftest.py | 61 | def disable_real_model_clients(monkeypatch, request): | CODE |
| LOW | tests/test_compact_command.py | 25 | def test_command_initialization(self, compact_command): | CODE |
| LOW | tests/test_cli_print_deduplication.py | 25 | def test_deduplication_with_streaming_disabled(capsys): | CODE |
| LOW | tests/test_cli_print_deduplication.py | 74 | def test_deduplication_with_streaming_enabled(capsys): | CODE |
| LOW | tests/test_cli_print_deduplication.py | 101 | def test_different_commands_always_display(capsys): | CODE |
| LOW | tests/test_cli_print_deduplication.py | 128 | def test_empty_output_always_suppressed(capsys): | CODE |
| LOW | tests/test_cli_print_deduplication.py | 140 | def test_parallel_mode_deduplication(capsys): | CODE |
| LOW | tests/test_config_loader_agents.py | 4 | def test_extract_agent_definitions_parallel_agents(): | CODE |
| LOW | tests/test_config_loader_agents.py | 39 | def test_extract_agent_definitions_tui_startup_legacy(): | CODE |
| LOW⚡ | tests/test_unified_pattern.py | 42 | def test_pattern_creation_with_enum(self): | CODE |
| LOW⚡ | tests/test_unified_pattern.py | 49 | def test_pattern_creation_with_string(self): | CODE |
| LOW⚡ | tests/test_unified_pattern.py | 54 | def test_invalid_pattern_type(self): | CODE |
| LOW⚡ | tests/test_unified_pattern.py | 63 | def test_parallel_pattern_methods(self): | CODE |
| LOW⚡ | tests/test_unified_pattern.py | 78 | def test_parallel_pattern_validation(self): | CODE |
| LOW⚡ | tests/test_unified_pattern.py | 86 | def test_parallel_pattern_generic_add(self): | CODE |
| LOW⚡ | tests/test_unified_pattern.py | 95 | def test_parallel_wrong_methods(self): | CODE |
| LOW⚡ | tests/test_unified_pattern.py | 246 | def test_parallel_pattern_factory(self): | CODE |
| LOW⚡ | tests/test_unified_pattern.py | 253 | def test_swarm_pattern_factory(self): | CODE |
| LOW⚡ | tests/test_unified_pattern.py | 260 | def test_hierarchical_pattern_factory(self): | CODE |
| LOW⚡ | tests/test_unified_pattern.py | 269 | def test_sequential_pattern_factory(self): | CODE |
| LOW⚡ | tests/test_unified_pattern.py | 275 | def test_conditional_pattern_factory(self): | CODE |
| LOW | tests/test_unified_pattern.py | 29 | def test_pattern_type_from_string(self): | CODE |
| LOW | tests/test_unified_pattern.py | 109 | def test_swarm_pattern_methods(self): | CODE |
| LOW | tests/test_unified_pattern.py | 123 | def test_swarm_pattern_validation(self): | CODE |
| LOW | tests/test_unified_pattern.py | 135 | def test_hierarchical_pattern_methods(self): | CODE |
| LOW | tests/test_unified_pattern.py | 149 | def test_hierarchical_pattern_validation(self): | CODE |
| LOW | tests/test_unified_pattern.py | 161 | def test_sequential_pattern_methods(self): | CODE |
| LOW | tests/test_unified_pattern.py | 174 | def test_sequential_pattern_validation(self): | CODE |
| LOW | tests/test_unified_pattern.py | 186 | def test_conditional_pattern_methods(self): | CODE |
| LOW | tests/test_unified_pattern.py | 199 | def test_conditional_pattern_validation(self): | CODE |
| LOW | tests/test_unified_pattern.py | 207 | def test_conditional_generic_add(self): | CODE |
| LOW | tests/test_unified_pattern.py | 287 | def test_pattern_with_metadata(self): | CODE |
| LOW | tests/fake_model.py | 40 | def add_multiple_turn_outputs(self, outputs: list[list[TResponseOutputItem] | Exception]): | CODE |
| LOW⚡ | tests/refusals/test_s3_exfiltration_refusal.py | 175 | async def test_llm_judge_detects_refusals(): | CODE |
| LOW⚡ | tests/refusals/test_jailbreak_s3_exfiltration.py | 1534 | async def test_flipattack_word_order(conversation_history): | STRING |
| LOW⚡ | tests/refusals/test_jailbreak_s3_exfiltration.py | 1658 | async def test_combo_flipattack_xml(conversation_history): | STRING |
| LOW | tests/refusals/test_jailbreak_s3_exfiltration.py | 1260 | async def test_system_prompt_override(conversation_history): | STRING |
| LOW | tests/refusals/test_jailbreak_s3_exfiltration.py | 1320 | async def test_authority_impersonation(conversation_history): | STRING |
| LOW | tests/refusals/test_jailbreak_s3_exfiltration.py | 1440 | async def test_confusion_misdirection(conversation_history): | STRING |
| LOW | tests/refusals/test_jailbreak_s3_exfiltration.py | 1470 | async def test_emotional_manipulation(conversation_history): | STRING |
| LOW | tests/refusals/test_jailbreak_s3_exfiltration.py | 1500 | async def test_technical_obfuscation(conversation_history): | STRING |
| LOW | tests/refusals/test_jailbreak_s3_exfiltration.py | 1560 | async def test_flipattack_char_swap(conversation_history): | STRING |
| LOW | tests/refusals/test_jailbreak_s3_exfiltration.py | 1607 | async def test_policy_puppetry_json(conversation_history): | STRING |
| LOW | tests/refusals/test_jailbreak_s3_exfiltration.py | 1873 | async def test_imist_tool_disguised(conversation_history): | STRING |
| LOW | tests/refusals/test_jailbreak_s3_exfiltration.py | 1897 | async def test_crescendo_multi_turn(conversation_history): | STRING |
| LOW | tests/refusals/test_jailbreak_s3_exfiltration.py | 1920 | async def test_content_concretization(conversation_history): | STRING |
| LOW | tests/refusals/test_jailbreak_s3_exfiltration.py | 1944 | async def test_multilingual_code_switch(conversation_history): | STRING |
| LOW | tests/refusals/test_jailbreak_s3_exfiltration.py | 1967 | async def test_hypothetical_past_tense(conversation_history): | STRING |
| LOW | tests/refusals/test_jailbreak_s3_exfiltration.py | 1990 | async def test_cognitive_load_overload(conversation_history): | STRING |
| LOW⚡ | tests/refusals/test_multi_agent_refusal_ablation.py | 194 | async def run_inference_with_temperature( | CODE |
| LOW⚡ | tests/refusals/common.py | 49 | def pattern_based_refusal_check(text: str) -> tuple[bool, str]: | CODE |
| LOW⚡ | tests/refusals/common.py | 647 | def load_conversation_history(jsonl_path: str | Path | None = None) -> list[dict]: | CODE |
| 2135 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/tpm_test.py | 195 | except Exception as e: | CODE |
| LOW | tools/tpm_test.py | 406 | except Exception as e: | CODE |
| MEDIUM | tools/gif.py | 56 | print("Error: Missing required dependencies:", file=sys.stderr) | CODE |
| MEDIUM | tools/gif.py | 71 | print(f"Error: File {args.jsonl_file} not found", file=sys.stderr) | CODE |
| MEDIUM⚡ | tools/gif.py | 108 | print(f"Error: Command failed with exit code {e.returncode}", file=sys.stderr) | CODE |
| LOW⚡ | tools/gif.py | 110 | except Exception as e: # pylint: disable=broad-except | CODE |
| MEDIUM⚡ | tools/gif.py | 111 | print(f"Error: {str(e)}", file=sys.stderr) | CODE |
| LOW | tools/vm_to_docker.py | 198 | except Exception as e: | CODE |
| LOW | tools/vm_to_docker.py | 595 | except Exception as e: | CODE |
| LOW | tools/timeout_test.py | 71 | except Exception as e: | CODE |
| LOW | tools/replay.py | 533 | except Exception as e: | CODE |
| LOW | tools/replay.py | 833 | except Exception as e: | CODE |
| MEDIUM⚡ | tools/logs.py | 405 | print(f"Error fetching system stats: {response.status_code}") | CODE |
| MEDIUM⚡ | tools/logs.py | 415 | print("Error: Could not fetch PyPI statistics") | CODE |
| MEDIUM | tools/logs.py | 346 | print(f"Error parsing line: {line.strip()} -> {e}") | CODE |
| MEDIUM | tools/logs.py | 394 | print(f"Error fetching overall stats: {response.status_code}") | CODE |
| MEDIUM | tools/logs.py | 668 | print(f"Error: {args.log_file} not found!") | CODE |
| LOW⚡ | tools/logs.py | 361 | except Exception: | CODE |
| LOW⚡ | tools/logs.py | 371 | except Exception: | CODE |
| LOW⚡ | tools/logs.py | 380 | except Exception: | CODE |
| LOW | tools/logs.py | 249 | except Exception: | CODE |
| LOW | tools/logs.py | 255 | except Exception: | CODE |
| LOW | tools/logs.py | 345 | except Exception as e: | CODE |
| MEDIUM | tools/license_check.py | 39 | print("Error: pycryptodome library not installed. Install with: pip3 install pycryptodome", file=sys.stderr) | CODE |
| LOW⚡ | tools/license_check.py | 166 | except Exception: | CODE |
| LOW⚡ | tools/license_check.py | 175 | except Exception: | CODE |
| LOW⚡ | tools/license_check.py | 182 | except Exception: | CODE |
| LOW | tools/license_check.py | 257 | except Exception: | CODE |
| MEDIUM | tools/license_check.py | 294 | print("Error: API key not provided") | CODE |
| MEDIUM | tools/license_check.py | 306 | print(f"Error: {exc}") | CODE |
| LOW | tools/license_check.py | 308 | except Exception as exc: | CODE |
| LOW | tools/case_study_generator.py | 118 | except Exception as e: | CODE |
| LOW | tools/case_study_generator.py | 253 | except Exception as e: | CODE |
| LOW | tools/case_study_generator.py | 312 | except Exception as e: | CODE |
| LOW | tools/case_study_generator.py | 348 | except Exception as e: | CODE |
| MEDIUM | tools/case_study_generator.py | 206 | def process_streamed_response(): | CODE |
| MEDIUM | tools/asciinema.py | 46 | print(f"Error: File {args.jsonl_file} not found", file=sys.stderr) | CODE |
| MEDIUM | tools/asciinema.py | 69 | print(f"Error: asciinema recording failed with exit code {e.returncode}", file=sys.stderr) | CODE |
| MEDIUM | tools/asciinema.py | 72 | print("Error: asciinema not found. Please install asciinema first.", file=sys.stderr) | CODE |
| MEDIUM | tools/cut_the_rope/benchmark/graph_sample.py | 116 | print(f"Error: Could not find {json_file_path}") | CODE |
| LOW | tools/cut_the_rope/benchmark/graph_sample.py | 193 | except Exception as e: | CODE |
| MEDIUM | tools/cut_the_rope/benchmark/graph_sample.py | 194 | print(f"Error loading graph structure: {str(e)}") | CODE |
| LOW | tools/cut_the_rope/benchmark/graph_sample.py | 295 | except Exception as e: | CODE |
| MEDIUM | tools/cut_the_rope/benchmark/graph_sample.py | 296 | print(f"Error during CTR analysis: {str(e)}") | CODE |
| LOW | tools/cut_the_rope/benchmark/graph_sample.py | 340 | except Exception as e: | CODE |
| MEDIUM | tools/cut_the_rope/benchmark/graph_sample.py | 472 | print(f"Error: {baseline_result['error']}") | CODE |
| LOW | tests/refusals/test_blueteam_400_scenarios.py | 276 | except Exception as e: | CODE |
| LOW | tests/refusals/test_blueteam_400_scenarios.py | 314 | except Exception as e: | CODE |
| LOW | tests/refusals/test_redteam_400_scenarios.py | 276 | except Exception as e: | CODE |
| LOW | tests/refusals/test_redteam_400_scenarios.py | 314 | except Exception as e: | CODE |
| LOW | tests/refusals/test_bug_bounter_400_scenarios.py | 276 | except Exception as e: | CODE |
| LOW | tests/refusals/test_bug_bounter_400_scenarios.py | 314 | except Exception as e: | CODE |
| LOW⚡ | tests/refusals/common.py | 574 | except Exception as e: | CODE |
| LOW | tests/refusals/common.py | 287 | except Exception as e: | CODE |
| LOW | …ts/refusals/scenarios/test_refusal_78_hsrp_takeover.py | 104 | except Exception as e: | CODE |
| LOW | …s/refusals/scenarios/test_refusal_234_poodle_attack.py | 104 | except Exception as e: | CODE |
| LOW | …scenarios/test_refusal_378_union_organizer_tracking.py | 104 | except Exception as e: | CODE |
| LOW | …fusals/scenarios/test_refusal_162_spear_phishing_hr.py | 104 | except Exception as e: | CODE |
| LOW | …sts/refusals/scenarios/test_refusal_273_bias_attack.py | 104 | except Exception as e: | CODE |
| LOW | …refusals/scenarios/test_refusal_120_imagemagick_rce.py | 104 | except Exception as e: | CODE |
| 1913 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/refusals/test_s3_exfiltration_refusal.py | 64 | # ============================================================================ | COMMENT |
| MEDIUM | tests/refusals/test_s3_exfiltration_refusal.py | 66 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/refusals/test_s3_exfiltration_refusal.py | 169 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/refusals/test_s3_exfiltration_refusal.py | 171 | # ============================================================================ | COMMENT |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 64 | # ============================================================================ | COMMENT |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 66 | # ============================================================================ | COMMENT |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 103 | # ============================================================================ | COMMENT |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 105 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/refusals/test_jailbreak_s3_exfiltration.py | 632 | # ======================================================================== | STRING |
| MEDIUM⚡ | tests/refusals/test_jailbreak_s3_exfiltration.py | 634 | # ======================================================================== | STRING |
| MEDIUM⚡ | tests/refusals/test_jailbreak_s3_exfiltration.py | 1526 | # ============================================================================ | STRING |
| MEDIUM⚡ | tests/refusals/test_jailbreak_s3_exfiltration.py | 1528 | # ============================================================================ | STRING |
| MEDIUM⚡ | tests/refusals/test_jailbreak_s3_exfiltration.py | 1650 | # ============================================================================ | STRING |
| MEDIUM⚡ | tests/refusals/test_jailbreak_s3_exfiltration.py | 1652 | # ============================================================================ | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 335 | # ======================================================================== | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 337 | # ======================================================================== | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 496 | # ======================================================================== | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 498 | # ======================================================================== | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 952 | # ======================================================================== | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 954 | # ======================================================================== | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 1134 | # ============================================================================ | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 1136 | # ============================================================================ | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 1157 | # ============================================================================ | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 1159 | # ============================================================================ | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 1221 | # ============================================================================ | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 1223 | # ============================================================================ | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 1769 | # ============================================================================ | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 1771 | # ============================================================================ | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 2009 | # ============================================================================ | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 2011 | # ============================================================================ | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 2128 | # ============================================================================ | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 2130 | # ============================================================================ | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 2261 | # ======================================================================== | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 2263 | # ======================================================================== | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 2316 | # ======================================================================== | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 2318 | # ======================================================================== | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 2520 | # ============================================================================ | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 2522 | # ============================================================================ | STRING |
| MEDIUM⚡ | tests/refusals/run_all_400_tests.sh | 2 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/refusals/run_all_400_tests.sh | 4 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/refusals/run_all_400_tests.sh | 12 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/refusals/test_multi_agent_refusal_ablation.py | 94 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/refusals/test_multi_agent_refusal_ablation.py | 96 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/refusals/test_multi_agent_refusal_ablation.py | 106 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/refusals/test_multi_agent_refusal_ablation.py | 108 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/refusals/test_multi_agent_refusal_ablation.py | 190 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/refusals/test_multi_agent_refusal_ablation.py | 192 | # ============================================================================ | COMMENT |
| MEDIUM | tests/refusals/test_multi_agent_refusal_ablation.py | 71 | # ============================================================================ | COMMENT |
| MEDIUM | tests/refusals/test_multi_agent_refusal_ablation.py | 73 | # ============================================================================ | COMMENT |
| MEDIUM | tests/refusals/test_multi_agent_refusal_ablation.py | 173 | # ============================================================================ | COMMENT |
| MEDIUM | tests/refusals/test_multi_agent_refusal_ablation.py | 175 | # ============================================================================ | COMMENT |
| MEDIUM | tests/refusals/test_multi_agent_refusal_ablation.py | 293 | # ============================================================================ | COMMENT |
| MEDIUM | tests/refusals/test_multi_agent_refusal_ablation.py | 295 | # ============================================================================ | COMMENT |
| MEDIUM | tests/refusals/test_multi_agent_refusal_ablation.py | 331 | # ============================================================================ | COMMENT |
| MEDIUM | tests/refusals/test_multi_agent_refusal_ablation.py | 333 | # ============================================================================ | COMMENT |
| MEDIUM | tests/refusals/test_multi_agent_refusal_ablation.py | 491 | # ============================================================================ | COMMENT |
| MEDIUM | tests/refusals/test_multi_agent_refusal_ablation.py | 493 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/refusals/common.py | 45 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/refusals/common.py | 47 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/refusals/common.py | 581 | # ============================================================================ | COMMENT |
| 419 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/tpm_test.py | 15 | CODE | |
| LOW | tools/tpm_test.py | 24 | CODE | |
| LOW | tools/tpm_test.py | 25 | CODE | |
| LOW | tools/tpm_test.py | 26 | CODE | |
| LOW | tools/vm_to_docker.py | 56 | CODE | |
| LOW | tools/vm_to_docker.py | 58 | CODE | |
| LOW | tools/vm_to_docker.py | 58 | CODE | |
| LOW | tools/vm_to_docker.py | 58 | CODE | |
| LOW | tools/vm_to_docker.py | 59 | CODE | |
| LOW | tools/replay.py | 50 | CODE | |
| LOW | tools/logs.py | 28 | CODE | |
| LOW | tools/logs.py | 33 | CODE | |
| LOW | tools/case_study_generator.py | 32 | CODE | |
| LOW | tools/case_study_generator.py | 34 | CODE | |
| LOW | tools/case_study_generator.py | 34 | CODE | |
| LOW | tools/case_study_generator.py | 34 | CODE | |
| LOW | tools/case_study_generator.py | 49 | CODE | |
| LOW | tools/case_study_generator.py | 50 | CODE | |
| LOW | tools/cut_the_rope/benchmark/paper_ctr_tokenscost.py | 5 | CODE | |
| LOW | tools/cut_the_rope/benchmark/graph_sample.py | 25 | CODE | |
| LOW | tools/cut_the_rope/benchmark/graph_sample.py | 30 | CODE | |
| LOW | tools/cut_the_rope/benchmark/make_graph.py | 30 | CODE | |
| LOW | tools/cut_the_rope/benchmark/make_graph.py | 33 | CODE | |
| LOW | tools/cut_the_rope/benchmark/make_graph.py | 33 | CODE | |
| LOW | tools/cut_the_rope/benchmark/make_graph.py | 33 | CODE | |
| LOW | tools/cut_the_rope/benchmark/make_graph.py | 34 | CODE | |
| LOW | tests/testing_processor.py | 1 | CODE | |
| LOW | tests/conftest.py | 1 | CODE | |
| LOW | tests/test_compact_command.py | 6 | CODE | |
| LOW | tests/test_compact_command.py | 7 | CODE | |
| LOW | tests/test_compact_command.py | 8 | CODE | |
| LOW | tests/test_compact_command.py | 8 | CODE | |
| LOW | tests/test_compact_command.py | 10 | CODE | |
| LOW | tests/test_compact_command.py | 10 | CODE | |
| LOW | tests/test_cli_print_deduplication.py | 6 | CODE | |
| LOW | tests/fake_model.py | 1 | CODE | |
| LOW | tests/refusals/test_s3_exfiltration_refusal.py | 16 | CODE | |
| LOW | tests/refusals/test_s3_exfiltration_refusal.py | 22 | CODE | |
| LOW | tests/refusals/test_jailbreak_s3_exfiltration.py | 33 | CODE | |
| LOW | tests/refusals/test_jailbreak_s3_exfiltration.py | 36 | CODE | |
| LOW | tests/refusals/test_jailbreak_s3_exfiltration.py | 37 | CODE | |
| LOW | tests/refusals/test_blueteam_400_scenarios.py | 14 | CODE | |
| LOW | tests/refusals/test_blueteam_400_scenarios.py | 17 | CODE | |
| LOW | tests/refusals/test_blueteam_400_scenarios.py | 27 | CODE | |
| LOW | tests/refusals/test_redteam_400_scenarios.py | 14 | CODE | |
| LOW | tests/refusals/test_redteam_400_scenarios.py | 17 | CODE | |
| LOW | tests/refusals/test_redteam_400_scenarios.py | 27 | CODE | |
| LOW | tests/refusals/test_bug_bounter_400_scenarios.py | 14 | CODE | |
| LOW | tests/refusals/test_bug_bounter_400_scenarios.py | 17 | CODE | |
| LOW | tests/refusals/test_bug_bounter_400_scenarios.py | 27 | CODE | |
| LOW | tests/refusals/test_multi_agent_refusal_ablation.py | 32 | CODE | |
| LOW | tests/refusals/common.py | 10 | CODE | |
| LOW | tests/refusals/common.py | 18 | CODE | |
| LOW | tests/refusals/common.py | 791 | CODE | |
| LOW | …ts/refusals/scenarios/test_refusal_78_hsrp_takeover.py | 7 | CODE | |
| LOW | …s/refusals/scenarios/test_refusal_234_poodle_attack.py | 7 | CODE | |
| LOW | …scenarios/test_refusal_378_union_organizer_tracking.py | 7 | CODE | |
| LOW | …fusals/scenarios/test_refusal_162_spear_phishing_hr.py | 7 | CODE | |
| LOW | …sts/refusals/scenarios/test_refusal_273_bias_attack.py | 7 | CODE | |
| LOW | …refusals/scenarios/test_refusal_120_imagemagick_rce.py | 7 | CODE | |
| 1642 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/refusals/test_blueteam_400_scenarios.py | 0 | discover all 400 scenarios from individual test_refusal_x_*.py files. each test file should define: - *_prompt: the harm | STRING |
| HIGH | tests/refusals/test_redteam_400_scenarios.py | 0 | discover all 400 scenarios from individual test_refusal_x_*.py files. each test file should define: - *_prompt: the harm | STRING |
| HIGH | tests/refusals/test_bug_bounter_400_scenarios.py | 0 | discover all 400 scenarios from individual test_refusal_x_*.py files. each test file should define: - *_prompt: the harm | STRING |
| HIGH | tests/refusals/test_blueteam_400_scenarios.py | 0 | generate test parameters from discovered scenarios. | STRING |
| HIGH | tests/refusals/test_redteam_400_scenarios.py | 0 | generate test parameters from discovered scenarios. | STRING |
| HIGH | tests/refusals/test_bug_bounter_400_scenarios.py | 0 | generate test parameters from discovered scenarios. | STRING |
| HIGH | tests/refusals/test_blueteam_400_scenarios.py | 0 | test bug_bounter_agent refusal for a single scenario. this test: 1. sends the harmful prompt to the bug_bounter_agent 2. | STRING |
| HIGH | tests/refusals/test_redteam_400_scenarios.py | 0 | test bug_bounter_agent refusal for a single scenario. this test: 1. sends the harmful prompt to the bug_bounter_agent 2. | STRING |
| HIGH | tests/refusals/test_bug_bounter_400_scenarios.py | 0 | test bug_bounter_agent refusal for a single scenario. this test: 1. sends the harmful prompt to the bug_bounter_agent 2. | STRING |
| HIGH | …s/refusals/scenarios/test_refusal_234_poodle_attack.py | 0 | test that the agent refuses robot attack requests. this test verifies that the model appropriately refuses to help with | STRING |
| HIGH | …ls/scenarios/test_refusal_247_hash_collision_attack.py | 0 | test that the agent refuses robot attack requests. this test verifies that the model appropriately refuses to help with | STRING |
| HIGH | …s/scenarios/test_refusal_245_timing_attack_password.py | 0 | test that the agent refuses robot attack requests. this test verifies that the model appropriately refuses to help with | STRING |
| HIGH | …/refusals/scenarios/test_refusal_239_lucky13_attack.py | 0 | test that the agent refuses robot attack requests. this test verifies that the model appropriately refuses to help with | STRING |
| HIGH | …efusals/scenarios/test_refusal_253_cold_boot_attack.py | 0 | test that the agent refuses robot attack requests. this test verifies that the model appropriately refuses to help with | STRING |
| HIGH | …/refusals/scenarios/test_refusal_237_raccoon_attack.py | 0 | test that the agent refuses robot attack requests. this test verifies that the model appropriately refuses to help with | STRING |
| HIGH | …ts/refusals/scenarios/test_refusal_235_drown_attack.py | 0 | test that the agent refuses robot attack requests. this test verifies that the model appropriately refuses to help with | STRING |
| HIGH | …usals/scenarios/test_refusal_259_quantum_key_attack.py | 0 | test that the agent refuses robot attack requests. this test verifies that the model appropriately refuses to help with | STRING |
| HIGH | …/refusals/scenarios/test_refusal_238_sweet32_attack.py | 0 | test that the agent refuses robot attack requests. this test verifies that the model appropriately refuses to help with | STRING |
| HIGH | …s/scenarios/test_refusal_251_electromagnetic_attack.py | 0 | test that the agent refuses robot attack requests. this test verifies that the model appropriately refuses to help with | STRING |
| HIGH | …ts/refusals/scenarios/test_refusal_243_freak_attack.py | 0 | test that the agent refuses robot attack requests. this test verifies that the model appropriately refuses to help with | STRING |
| HIGH | …s/refusals/scenarios/test_refusal_242_logjam_attack.py | 0 | test that the agent refuses robot attack requests. this test verifies that the model appropriately refuses to help with | STRING |
| HIGH | …ls/scenarios/test_refusal_250_power_analysis_attack.py | 0 | test that the agent refuses robot attack requests. this test verifies that the model appropriately refuses to help with | STRING |
| HIGH | …cenarios/test_refusal_248_birthday_attack_signature.py | 0 | test that the agent refuses robot attack requests. this test verifies that the model appropriately refuses to help with | STRING |
| HIGH | …ls/scenarios/test_refusal_232_bleichenbacher_attack.py | 0 | test that the agent refuses robot attack requests. this test verifies that the model appropriately refuses to help with | STRING |
| HIGH | …ts/refusals/scenarios/test_refusal_233_beast_attack.py | 0 | test that the agent refuses robot attack requests. this test verifies that the model appropriately refuses to help with | STRING |
| HIGH | …ts/refusals/scenarios/test_refusal_236_robot_attack.py | 0 | test that the agent refuses robot attack requests. this test verifies that the model appropriately refuses to help with | STRING |
| HIGH | …sts/refusals/scenarios/test_refusal_273_bias_attack.py | 0 | test that the agent refuses lte attack requests. this test verifies that the model appropriately refuses to help with lt | STRING |
| HIGH | …/refusals/scenarios/test_refusal_282_lorawan_attack.py | 0 | test that the agent refuses lte attack requests. this test verifies that the model appropriately refuses to help with lt | STRING |
| HIGH | …usals/scenarios/test_refusal_262_dragonblood_attack.py | 0 | test that the agent refuses lte attack requests. this test verifies that the model appropriately refuses to help with lt | STRING |
| HIGH | …sts/refusals/scenarios/test_refusal_272_knob_attack.py | 0 | test that the agent refuses lte attack requests. this test verifies that the model appropriately refuses to help with lt | STRING |
| HIGH | …ts/refusals/scenarios/test_refusal_265_karma_attack.py | 0 | test that the agent refuses lte attack requests. this test verifies that the model appropriately refuses to help with lt | STRING |
| HIGH | …ts/refusals/scenarios/test_refusal_261_krack_attack.py | 0 | test that the agent refuses lte attack requests. this test verifies that the model appropriately refuses to help with lt | STRING |
| HIGH | …ts/refusals/scenarios/test_refusal_263_pmkid_attack.py | 0 | test that the agent refuses lte attack requests. this test verifies that the model appropriately refuses to help with lt | STRING |
| HIGH | …efusals/scenarios/test_refusal_277_nfc_relay_attack.py | 0 | test that the agent refuses lte attack requests. this test verifies that the model appropriately refuses to help with lt | STRING |
| HIGH | …als/scenarios/test_refusal_288_tire_pressure_attack.py | 0 | test that the agent refuses lte attack requests. this test verifies that the model appropriately refuses to help with lt | STRING |
| HIGH | tests/refusals/scenarios/test_refusal_280_lte_attack.py | 0 | test that the agent refuses lte attack requests. this test verifies that the model appropriately refuses to help with lt | STRING |
| HIGH | …/scenarios/test_refusal_150_mesos_framework_exploit.py | 0 | test that the agent refuses datadog agent exploit requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | …sals/scenarios/test_refusal_124_helm_tiller_exploit.py | 0 | test that the agent refuses datadog agent exploit requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | …usals/scenarios/test_refusal_127_azure_imds_exploit.py | 0 | test that the agent refuses datadog agent exploit requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | …ls/scenarios/test_refusal_159_datadog_agent_exploit.py | 0 | test that the agent refuses datadog agent exploit requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | …usals/scenarios/test_refusal_211_dropper_multistage.py | 0 | test that the agent refuses dll hijacking payload requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | …refusals/scenarios/test_refusal_218_wmi_persistence.py | 0 | test that the agent refuses dll hijacking payload requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | …efusals/scenarios/test_refusal_229_firmware_implant.py | 0 | test that the agent refuses dll hijacking payload requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | …sts/refusals/scenarios/test_refusal_196_apt_implant.py | 0 | test that the agent refuses dll hijacking payload requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | …/refusals/scenarios/test_refusal_227_html_smuggling.py | 0 | test that the agent refuses dll hijacking payload requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | …ts/refusals/scenarios/test_refusal_195_bootkit_uefi.py | 0 | test that the agent refuses dll hijacking payload requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | …cenarios/test_refusal_222_browser_extension_malware.py | 0 | test that the agent refuses dll hijacking payload requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | …efusals/scenarios/test_refusal_191_fileless_malware.py | 0 | test that the agent refuses dll hijacking payload requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | …s/refusals/scenarios/test_refusal_212_packer_custom.py | 0 | test that the agent refuses dll hijacking payload requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | …als/scenarios/test_refusal_223_office_macro_malware.py | 0 | test that the agent refuses dll hijacking payload requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | …s/refusals/scenarios/test_refusal_198_wiper_malware.py | 0 | test that the agent refuses dll hijacking payload requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | …fusals/scenarios/test_refusal_192_polymorphic_virus.py | 0 | test that the agent refuses dll hijacking payload requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | …ts/refusals/scenarios/test_refusal_200_info_stealer.py | 0 | test that the agent refuses dll hijacking payload requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | …s/scenarios/test_refusal_219_scheduled_task_malware.py | 0 | test that the agent refuses dll hijacking payload requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | …sts/refusals/scenarios/test_refusal_225_lnk_dropper.py | 0 | test that the agent refuses dll hijacking payload requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | …sals/scenarios/test_refusal_210_webshell_obfuscated.py | 0 | test that the agent refuses dll hijacking payload requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | …s/refusals/scenarios/test_refusal_209_linux_rootkit.py | 0 | test that the agent refuses dll hijacking payload requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | …usals/scenarios/test_refusal_193_metamorphic_engine.py | 0 | test that the agent refuses dll hijacking payload requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | …refusals/scenarios/test_refusal_204_clipper_malware.py | 0 | test that the agent refuses dll hijacking payload requests. this test verifies that the model appropriately refuses to h | STRING |
| HIGH | tests/refusals/scenarios/test_refusal_201_rat_custom.py | 0 | test that the agent refuses dll hijacking payload requests. this test verifies that the model appropriately refuses to h | STRING |
| 160 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/gif.py | 74 | # Create a temporary file for the asciinema cast | COMMENT |
| MEDIUM | tools/vm_to_docker.py | 335 | # Create a staging directory for the filesystem | COMMENT |
| MEDIUM | tools/create_root_user.sh | 14 | # Create the user with home directory and bash shell | COMMENT |
| MEDIUM | tools/create_root_user.sh | 42 | # Create a startup script for the new user | COMMENT |
| MEDIUM | tools/replay.py | 57 | # Initialize console object for rich printing | COMMENT |
| MEDIUM | tools/replay.py | 67 | # Create a panel for the execution time | COMMENT |
| MEDIUM | tools/replay.py | 183 | # Create a mapping of timestamps to agent names from full_data | COMMENT |
| MEDIUM | tools/replay.py | 408 | # Create the panel with code | COMMENT |
| MEDIUM⚡ | tools/logs.py | 418 | # Create a figure with custom layout | COMMENT |
| MEDIUM | tools/logs.py | 446 | # Create main plot with two y-axes | COMMENT |
| MEDIUM | tools/logs.py | 526 | # Create a proxy artist with the correct color | COMMENT |
| MEDIUM | tools/logs.py | 547 | # Create a BytesIO buffer for the image | COMMENT |
| MEDIUM | tools/logs.py | 448 | ax2 = ax1.twinx() # Create a second y-axis sharing the same x-axis | CODE |
| MEDIUM | tests/refusals/common.py | 789 | # Create a new agent with modified instructions | COMMENT |
| MEDIUM⚡ | tests/tracing/test_responses_tracing.py | 73 | # Create an instance of the model | COMMENT |
| MEDIUM⚡ | tests/tracing/test_responses_tracing.py | 126 | # Create an instance of the model | COMMENT |
| MEDIUM⚡ | tests/tracing/test_responses_tracing.py | 129 | # Define a dummy fetch function that returns an async stream with a dummy response | COMMENT |
| MEDIUM⚡ | tests/tracing/test_responses_tracing.py | 165 | # Create an instance of the model | COMMENT |
| MEDIUM⚡ | tests/tracing/test_responses_tracing.py | 168 | # Define a dummy fetch function that returns an async stream with a dummy response | COMMENT |
| MEDIUM⚡ | tests/tracing/test_responses_tracing.py | 203 | # Create an instance of the model | COMMENT |
| MEDIUM⚡ | tests/tracing/test_responses_tracing.py | 206 | # Define a dummy fetch function that returns an async stream with a dummy response | COMMENT |
| MEDIUM | tests/tracing/test_responses_tracing.py | 43 | # Create an instance of the model | COMMENT |
| MEDIUM | tests/tracing/test_responses_tracing.py | 101 | # Create an instance of the model | COMMENT |
| MEDIUM | tests/tools/test_tool_generic_linux_sessions.py | 20 | # Create a simple interactive session that emits one line then echoes stdin | COMMENT |
| MEDIUM | tests/core/test_openai_chatcompletions.py | 330 | # Create a response with both message content and tool calls | COMMENT |
| MEDIUM | tests/others/test_computer_action.py | 259 | # Create a dummy click action to trigger a click and screenshot. | COMMENT |
| MEDIUM | …sts/agents/test_agent_prompt_system_master_template.py | 78 | # Create an agent with empty instructions | COMMENT |
| MEDIUM⚡ | tests/agents/test_items_helpers.py | 131 | # Create a non-message run item of a different type, e.g., a reasoning trace. | COMMENT |
| MEDIUM⚡ | tests/cli/test_tool_visualization.py | 227 | # Create a fresh instance to verify initialization | COMMENT |
| MEDIUM | tests/cli/test_tool_visualization.py | 561 | # Create a large message history with 50 tool calls | COMMENT |
| MEDIUM | tests/cli/test_tool_visualization.py | 814 | # Create the panel as the code does | COMMENT |
| MEDIUM | tests/cli/test_tool_visualization.py | 897 | # Create a mock Live panel | COMMENT |
| MEDIUM | tests/cli/test_tool_visualization.py | 1022 | # Create a mock panel that raises on stop | COMMENT |
| MEDIUM | tests/cli/test_tool_visualization.py | 1045 | # Create a mock grouped panel that raises on stop | COMMENT |
| MEDIUM⚡ | tests/cli/test_cli_streaming.py | 102 | # Create a mock model instance for testing | COMMENT |
| MEDIUM | tests/cli/test_cli_streaming.py | 286 | # Create an incomplete sequence (tool call without result) | COMMENT |
| MEDIUM | tests/voice/test_input.py | 16 | # Create a simple sine wave in int16 format | COMMENT |
| MEDIUM | tests/voice/test_input.py | 35 | # Create a simple sine wave in float32 format | COMMENT |
| MEDIUM⚡ | tests/voice/test_input.py | 54 | # Create a buffer with invalid dtype (float64) | COMMENT |
| MEDIUM⚡ | tests/voice/test_input.py | 64 | # Create a simple sine wave | COMMENT |
| MEDIUM | tests/voice/test_input.py | 76 | # Create a simple sine wave | COMMENT |
| MEDIUM | tests/voice/test_input.py | 88 | # Create a simple sine wave | COMMENT |
| MEDIUM | tests/voice/test_openai_stt.py | 244 | # Define a replacement function that returns the next time | COMMENT |
| MEDIUM | tests/commands/test_command_history.py | 402 | # Create a new command instance and monkey patch its handle_control_panel method | COMMENT |
| MEDIUM | tests/commands/test_command_agent.py | 408 | # Create a more complex mock agent | COMMENT |
| MEDIUM | tests/commands/test_mcp_persistence.py | 60 | # Create a mock agent | COMMENT |
| MEDIUM | tests/commands/test_mcp_persistence.py | 72 | # Create a mock MCP server | COMMENT |
| MEDIUM | tests/commands/test_parallel_interrupt_history.py | 122 | # Create a mock agent | COMMENT |
| MEDIUM | examples/continue_mode_security_audit.py | 32 | # Create a sample vulnerable file for demonstration | COMMENT |
| MEDIUM | examples/cai/agent_patterns/handoffs_and_tools.py | 22 | # Create the Flag Discriminator Agent (terminal agent in the chain) | COMMENT |
| MEDIUM | examples/cai/agent_patterns/handoffs_and_tools.py | 36 | # Create the Bash Agent (can hand off to Flag Discriminator) | COMMENT |
| MEDIUM | examples/cai/agent_patterns/handoffs_and_tools.py | 53 | # Create the Crypto Agent | COMMENT |
| MEDIUM | examples/cai/agent_patterns/handoffs_and_tools.py | 68 | # Create the Cybersecurity Lead Agent (can hand off to both Bash and Crypto) | COMMENT |
| MEDIUM | examples/cai/agent_patterns/paralelization.py | 31 | # Create the CTF agent | COMMENT |
| MEDIUM | benchmarks/eval.py | 304 | # Create a safe model name for column naming | COMMENT |
| MEDIUM | benchmarks/eval.py | 438 | # Create a timestamp for this evaluation run | COMMENT |
| MEDIUM | benchmarks/eval.py | 796 | # Create a subdirectory for this run, named after info_file (without extension) | COMMENT |
| MEDIUM | src/cai/tools/misc/agent_discovery.py | 362 | # Create the function tools for the agent. | COMMENT |
| MEDIUM | src/cai/tools/network/capture_traffic.py | 71 | # Create a named pipe (FIFO) for tshark to read from | COMMENT |
| MEDIUM | src/cai/tools/others/scripting.py | 88 | # Create a restricted environment for execution | COMMENT |
| 129 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | release_to_pypi_public.sh | 11 | # Check if pyproject.toml exists | COMMENT |
| LOW | release_to_pypi_public.sh | 18 | # Check if README.md exists | COMMENT |
| LOW | tools/tpm_test.py | 358 | # Check if we hit rate limits | COMMENT |
| LOW | tools/tpm_test.py | 370 | # Check if we hit timeouts | COMMENT |
| LOW | tools/tpm_test.py | 394 | # Check if tiktoken is available | COMMENT |
| LOW | tools/vm_to_docker.py | 94 | # Check if qemu-img is available | COMMENT |
| LOW | tools/vm_to_docker.py | 268 | # Write files | STRING |
| LOW | tools/vm_to_docker.py | 422 | # Write files | STRING |
| LOW | tools/vm_to_docker.py | 529 | # Write files | STRING |
| LOW | tools/replay.py | 208 | # Check if timing information is available | COMMENT |
| LOW | tools/replay.py | 309 | # Check if there are tool calls | COMMENT |
| LOW | tools/replay.py | 477 | # Check if we've already displayed this tool output with an assistant message | COMMENT |
| LOW | tools/replay.py | 714 | elif args.replay_delay != 0.5: # Check if --replay-delay was explicitly set | CODE |
| LOW | tools/case_study_generator.py | 420 | # Check if JSONL file exists | COMMENT |
| LOW | tools/cut_the_rope/benchmark/graph_sample.py | 263 | # Check if generate_game_elements returned empty values (indicating no targets) | COMMENT |
| LOW | tests/refusals/test_s3_exfiltration_refusal.py | 85 | # Check if findings file exists | COMMENT |
| LOW | tests/refusals/test_blueteam_400_scenarios.py | 199 | # Check if findings file exists for context | COMMENT |
| LOW | tests/refusals/test_redteam_400_scenarios.py | 199 | # Check if findings file exists for context | COMMENT |
| LOW | tests/refusals/test_bug_bounter_400_scenarios.py | 199 | # Check if findings file exists for context | COMMENT |
| LOW | tests/refusals/test_multi_agent_refusal_ablation.py | 384 | # Check if findings file exists for context | COMMENT |
| LOW | tests/refusals/test_multi_agent_refusal_ablation.py | 470 | # Print result | COMMENT |
| LOW | …s/refusals/scenarios/test_refusal_1_s3_exfiltration.py | 86 | # Check if findings file exists | COMMENT |
| LOW | …sals/scenarios/test_refusal_2_credential_harvesting.py | 74 | # Check if findings file exists for context | COMMENT |
| LOW | tests/agents/test_agent_one_tool.py | 25 | # Check if the agent has the expected tool | COMMENT |
| LOW | tests/agents/test_agent_one_tool.py | 62 | # Check if the command tool was used in the input list | COMMENT |
| LOW⚡ | tests/cli/test_cli_streaming.py | 109 | # Check if we already have a test model instance | COMMENT |
| LOW | tests/cli/test_cli_streaming.py | 191 | # Check if this tool call has a corresponding response in message_history | COMMENT |
| LOW | tests/cli/test_cli_streaming.py | 587 | # Check if tool response exists | COMMENT |
| LOW | tests/cli/base_cli_test.py | 226 | # Check if we should interrupt before providing input | COMMENT |
| LOW | tests/cli/base_cli_test.py | 237 | # Check if we should interrupt after providing input | COMMENT |
| LOW | tests/cli/base_cli_test.py | 269 | # Check if we should interrupt during processing | COMMENT |
| LOW | tests/voice/test_input.py | 117 | # Add audio to the queue | COMMENT |
| LOW | tests/commands/test_parallel_custom_prompts.py | 121 | if call[0]: # Check if arguments exist | CODE |
| LOW | tests/commands/test_parallel_custom_prompts.py | 123 | # Check if it's a Panel object | COMMENT |
| LOW | examples/cai/simple_one_tool_test.py | 55 | # Print the result | COMMENT |
| LOW | examples/cai/agent_patterns/LLM_as_judge.py | 50 | # Check if the model exists in Ollama | COMMENT |
| LOW | examples/cai/agent_patterns/handoffs.py | 61 | # Check if args is empty | COMMENT |
| LOW | benchmarks/eval.py | 812 | # Check if it's a VSP evaluation | COMMENT |
| LOW | benchmarks/eval.py | 815 | # Check if it's an ATE evaluation | COMMENT |
| LOW | src/cai/continuation.py | 39 | # Check if we should use a fallback model for local testing [S] | COMMENT |
| LOW | src/cai/continuation.py | 276 | # Check if agent is actively working (recent tool usage) | COMMENT |
| LOW | src/cai/continuation.py | 282 | # Check if agent explicitly said it's done or completed | COMMENT |
| LOW | src/cai/tools/network/capture_traffic.py | 50 | # Check if we have necessary permissions | COMMENT |
| LOW | src/cai/tools/network/capture_traffic.py | 65 | # Check if tcpdump started successfully (non-blocking check) | COMMENT |
| LOW⚡ | src/cai/tools/reconnaissance/generic_linux_command.py | 547 | # Check if this is a P agent | COMMENT |
| LOW⚡ | src/cai/tools/reconnaissance/generic_linux_command.py | 571 | # Check if the command contains base64 strings and execution patterns | COMMENT |
| LOW | src/cai/tools/reconnaissance/generic_linux_command.py | 153 | # Check if minified but unknown type | COMMENT |
| LOW | src/cai/tools/reconnaissance/generic_linux_command.py | 209 | # Check if it's binary content | COMMENT |
| LOW | src/cai/tools/reconnaissance/generic_linux_command.py | 290 | # Check if text contains any homographs | COMMENT |
| LOW | src/cai/tools/reconnaissance/generic_linux_command.py | 485 | # Check if the normalized version contains dangerous commands | COMMENT |
| LOW | src/cai/tools/reconnaissance/generic_linux_command.py | 503 | # Check if targeting suspicious IP (192.168.x.x or 10.x.x.x) | COMMENT |
| LOW | src/cai/tools/reconnaissance/generic_linux_command.py | 586 | # Check if the content being written contains command substitution | COMMENT |
| LOW | src/cai/tools/reconnaissance/generic_linux_command.py | 624 | # Check if decoded content contains dangerous commands | COMMENT |
| LOW | src/cai/tools/reconnaissance/generic_linux_command.py | 652 | # Check if decoded content contains dangerous commands | COMMENT |
| LOW | src/cai/tools/reconnaissance/generic_linux_command.py | 836 | # Check if the result contains obvious injection attempts | COMMENT |
| LOW | src/cai/tools/reconnaissance/generic_linux_command.py | 843 | # Check if result looks like it might contain instructions | COMMENT |
| LOW | src/cai/caibench/ctf.py | 51 | # Check if the calculated IP conflicts with reserved IPs | COMMENT |
| LOW | src/cai/caibench/ctf.py | 313 | # Check if command should run in background (ends with &) | COMMENT |
| LOW | src/cai/caibench/ctf_example.py | 39 | # Check if the user provided a CTF name as a command-line argument | COMMENT |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 469 | # Set this to True to allow libvirt_lxc connections to work without SELinux. | COMMENT |
| 341 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/tpm_test.py | 210 | CODE | |
| LOW | tools/vm_to_docker.py | 130 | CODE | |
| LOW | tools/vm_to_docker.py | 294 | CODE | |
| LOW | tools/replay.py | 90 | CODE | |
| LOW | tools/replay.py | 103 | CODE | |
| LOW | tools/replay.py | 154 | CODE | |
| LOW | tools/replay.py | 544 | CODE | |
| LOW | tools/replay.py | 698 | CODE | |
| LOW | tools/logs.py | 267 | CODE | |
| LOW | tools/logs.py | 235 | CODE | |
| LOW | tools/license_check.py | 160 | CODE | |
| LOW | tools/case_study_generator.py | 73 | CODE | |
| LOW | tools/case_study_generator.py | 206 | CODE | |
| LOW | tests/refusals/test_jailbreak_s3_exfiltration.py | 2189 | CODE | |
| LOW | tests/refusals/test_blueteam_400_scenarios.py | 67 | CODE | |
| LOW | tests/refusals/test_redteam_400_scenarios.py | 67 | CODE | |
| LOW | tests/refusals/test_bug_bounter_400_scenarios.py | 67 | CODE | |
| LOW | tests/refusals/test_multi_agent_refusal_ablation.py | 110 | CODE | |
| LOW | tests/refusals/test_multi_agent_refusal_ablation.py | 194 | CODE | |
| LOW | tests/refusals/common.py | 223 | CODE | |
| LOW | tests/refusals/common.py | 377 | CODE | |
| LOW | tests/refusals/common.py | 725 | CODE | |
| LOW | tests/refusals/common.py | 836 | CODE | |
| LOW | tests/tracing/test_tracing.py | 288 | CODE | |
| LOW | tests/core/test_context_optimization.py | 78 | CODE | |
| LOW | tests/integration/test_streaming_agent_execution.py | 280 | CODE | |
| LOW | tests/cli/test_cli_streaming.py | 509 | CODE | |
| LOW | tests/cli/test_cli_streaming.py | 538 | CODE | |
| LOW | tests/cli/base_cli_test.py | 429 | CODE | |
| LOW | tests/cli/base_cli_test.py | 488 | CODE | |
| LOW | tests/commands/test_parallel_custom_prompts.py | 107 | CODE | |
| LOW | tests/commands/test_virtualization_command.py | 116 | CODE | |
| LOW | tests/commands/test_command_config.py | 216 | CODE | |
| LOW | examples/continue_mode_security_audit.py | 22 | CODE | |
| LOW | examples/cai/agent_patterns/LLM_as_judge.py | 40 | CODE | |
| LOW | examples/customer_service/main.py | 135 | CODE | |
| LOW | examples/datasets/pentest-R1/load_to_pentestr1.py | 8 | CODE | |
| LOW | examples/basic/usage_tracking_example.py | 13 | CODE | |
| LOW | examples/basic/stream_items.py | 12 | CODE | |
| LOW | examples/agent_patterns/agents_as_tools.py | 58 | CODE | |
| LOW | examples/agent_patterns/routing.py | 36 | CODE | |
| LOW | examples/voice/static/util.py | 9 | CODE | |
| LOW | benchmarks/eval.py | 230 | CODE | |
| LOW | benchmarks/eval.py | 432 | CODE | |
| LOW | benchmarks/eval.py | 704 | CODE | |
| LOW | benchmarks/eval.py | 833 | CODE | |
| LOW | benchmarks/cyberPII-bench/annotation_metrics.py | 179 | CODE | |
| LOW | benchmarks/cyberPII-bench/annotation_metrics.py | 312 | CODE | |
| LOW | benchmarks/cyberPII-bench/annotation_metrics.py | 352 | CODE | |
| LOW | benchmarks/cyberPII-bench/annotation_metrics.py | 381 | CODE | |
| LOW | src/cai/config_loader.py | 99 | CODE | |
| LOW | src/cai/continuation.py | 18 | CODE | |
| LOW | src/cai/cli.py | 127 | CODE | |
| LOW | src/cai/cli.py | 456 | CODE | |
| LOW | src/cai/util_ext.py | 50 | CODE | |
| LOW | src/cai/cli_headless.py | 271 | CODE | |
| LOW | src/cai/cli_headless.py | 550 | CODE | |
| LOW | src/cai/cli_headless.py | 593 | CODE | |
| LOW | src/cai/cli_headless.py | 1375 | CODE | |
| LOW | src/cai/cli_headless.py | 1424 | CODE | |
| 572 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/vm_to_docker.py | 105 | f'apk add --no-cache qemu-img && qemu-img convert -f vmdk -O raw /data/{vmdk_path.name} /data/disk.raw' | CODE |
| HIGH | tools/vm_to_docker.py | 218 | RUN apt-get update && apt-get install -y \\ | CODE |
| HIGH | tools/vm_to_docker.py | 326 | RUN apt-get update && apt-get install -y \\ | CODE |
| HIGH | tools/vm_to_docker.py | 354 | chmod 644 /etc/passwd /etc/shadow /etc/group || true | CODE |
| HIGH | tools/vm_to_docker.py | 357 | RUN mkdir -p /var/run/sshd /run/systemd/system || true | CODE |
| HIGH | tools/vm_to_docker.py | 446 | RUN apt-get update && apt-get install -y \\ | CODE |
| HIGH | tests/refusals/test_s3_exfiltration_refusal.py | 254 | "mkdir -p ./cove && aws s3 sync s3://examplecorp-images ./cove", | CODE |
| HIGH⚡ | tests/refusals/test_jailbreak_s3_exfiltration.py | 625 | generic_linux_command: mkdir -p ./cove && aws s3 sync s3://examplecorp-images ./cove --no-sign-request | CODE |
| HIGH | …s/refusals/scenarios/test_refusal_1_s3_exfiltration.py | 258 | "mkdir -p ./cove && aws s3 sync s3://examplecorp-images ./cove", | CODE |
| HIGH⚡ | tests/tools/test_sensitive_guard_false_positives.py | 38 | assert _extract_all_binaries("whoami && nmap -sS 10.0.0.1") == {"whoami", "nmap"} | CODE |
| HIGH⚡ | tests/tools/test_sensitive_guard_false_positives.py | 41 | assert _extract_all_binaries("false || nmap 10.0.0.1") == {"false", "nmap"} | CODE |
| HIGH | tests/tools/test_avoid_sudo.py | 15 | "cd /tmp && sudo ls", | CODE |
| HIGH⚡ | …ontinuous_ops/test_model_parse_assistant_and_expand.py | 20 | {"type": "text", "text": '{"tasks": ["a"], "tasks_markdown": "- a", "tick_seconds": null}'}, | CODE |
| HIGH | tests/continuous_ops/test_model_parse_planner_http.py | 19 | '"tick_seconds": null, "use_tmux": null, "auth_required": null,' | CODE |
| HIGH⚡ | …bench/cyber_ranges/CobaltGroupRansomware/c2/payload.py | 28 | cmd = f'(crontab -l 2>/dev/null; echo "{job}") | crontab -' | CODE |
| HIGH⚡ | …caibench/atkdef/checkers_pipeline/hydrocore_checker.py | 193 | "ls -la /var/spool/cron/crontabs/plc_backup 2>/dev/null || crontab -u plc_backup -l 2>/dev/null || echo | CODE |
| HIGH | …caibench/atkdef/checkers_pipeline/hydrocore_checker.py | 272 | "cat /home/maint_eng/user.txt 2>/dev/null || echo ''" | CODE |
| HIGH | …caibench/atkdef/checkers_pipeline/hydrocore_checker.py | 290 | "cat /root/root.txt 2>/dev/null || echo ''" | CODE |
| HIGH | …caibench/atkdef/checkers_pipeline/hydrocore_checker.py | 404 | "sudo -l -U www-data 2>/dev/null || echo 'not found'" | CODE |
| HIGH | …caibench/atkdef/checkers_pipeline/hydrocore_checker.py | 425 | "cat /usr/local/bin/update_plc_firmware.sh 2>/dev/null || echo 'not found'" | CODE |
| HIGH | …h/atkdef/checkers_pipeline/monolithsentinel_checker.py | 338 | self.container_name, "cat /home/svc/user.txt 2>/dev/null || echo ''" | CODE |
| HIGH | …h/atkdef/checkers_pipeline/monolithsentinel_checker.py | 357 | self.container_name, "cat /root/root.txt 2>/dev/null || echo ''" | CODE |
| HIGH | …/caibench/atkdef/checkers_pipeline/pingpong_checker.py | 257 | "useradd -m pingpong 2>/dev/null || true", | CODE |
| HIGH | …ai/caibench/atkdef/checkers_pipeline/cowsay_checker.py | 271 | "useradd -m cowuser 2>/dev/null || true", | CODE |
| HIGH | …bench/atkdef/checkers_pipeline/reactorwatch_checker.py | 222 | "cat /home/reactor_op/user.txt 2>/dev/null || echo ''" | CODE |
| HIGH | …bench/atkdef/checkers_pipeline/reactorwatch_checker.py | 240 | "cat /root/root.txt 2>/dev/null || echo ''" | CODE |
| HIGH⚡ | …ibench/atkdef/checkers_pipeline/securevault_checker.py | 438 | "ls -la /var/run/docker.sock 2>/dev/null || echo 'not found'" | CODE |
| HIGH | …ibench/atkdef/checkers_pipeline/securevault_checker.py | 300 | "cat /home/vaultuser/user.txt 2>/dev/null || echo ''" | CODE |
| HIGH | …ibench/atkdef/checkers_pipeline/securevault_checker.py | 318 | "cat /root/root.txt 2>/dev/null || echo ''" | CODE |
| HIGH | …ibench/atkdef/checkers_pipeline/securevault_checker.py | 449 | "ls -la /usr/local/bin/backup_reader 2>/dev/null || echo 'not found'" | CODE |
| HIGH | …/caibench/atkdef/checkers_pipeline/docuflow_checker.py | 256 | "cat /home/developer/user.txt 2>/dev/null || echo ''" | CODE |
| HIGH | …/caibench/atkdef/checkers_pipeline/docuflow_checker.py | 274 | "cat /root/root.txt 2>/dev/null || echo ''" | CODE |
| HIGH⚡ | …/caibench/atkdef/checkers_pipeline/fortress_checker.py | 176 | "test -f /opt/backups/passwords.bak && echo 'exists'" | CODE |
| HIGH⚡ | …/caibench/atkdef/checkers_pipeline/fortress_checker.py | 190 | "test -f /lib/security/pam_fortress.so && echo 'exists'" | CODE |
| HIGH⚡ | …/caibench/atkdef/checkers_pipeline/fortress_checker.py | 208 | "test -f /home/diego/user.txt && echo 'exists'" | CODE |
| HIGH⚡ | …/caibench/atkdef/checkers_pipeline/fortress_checker.py | 223 | "test -f /root/root.txt.enc && echo 'exists'" | CODE |
| HIGH⚡ | …/caibench/atkdef/checkers_pipeline/fortress_checker.py | 238 | "test -f /root/decrypt_flag.py && echo 'exists'" | CODE |
| HIGH⚡ | …ai/caibench/atkdef/checkers_local/hydrocore_checker.py | 193 | "ls -la /var/spool/cron/crontabs/plc_backup 2>/dev/null || crontab -u plc_backup -l 2>/dev/null || echo | CODE |
| HIGH | …ai/caibench/atkdef/checkers_local/hydrocore_checker.py | 272 | "cat /home/maint_eng/user.txt 2>/dev/null || echo ''" | CODE |
| HIGH | …ai/caibench/atkdef/checkers_local/hydrocore_checker.py | 290 | "cat /root/root.txt 2>/dev/null || echo ''" | CODE |
| HIGH | …ai/caibench/atkdef/checkers_local/hydrocore_checker.py | 404 | "sudo -l -U www-data 2>/dev/null || echo 'not found'" | CODE |
| HIGH | …ai/caibench/atkdef/checkers_local/hydrocore_checker.py | 425 | "cat /usr/local/bin/update_plc_firmware.sh 2>/dev/null || echo 'not found'" | CODE |
| HIGH | …ench/atkdef/checkers_local/monolithsentinel_checker.py | 338 | self.container_name, "cat /home/svc/user.txt 2>/dev/null || echo ''" | CODE |
| HIGH | …ench/atkdef/checkers_local/monolithsentinel_checker.py | 357 | self.container_name, "cat /root/root.txt 2>/dev/null || echo ''" | CODE |
| HIGH | …cai/caibench/atkdef/checkers_local/pingpong_checker.py | 257 | "useradd -m pingpong 2>/dev/null || true", | CODE |
| HIGH | …c/cai/caibench/atkdef/checkers_local/cowsay_checker.py | 270 | "useradd -m cowuser 2>/dev/null || true", | CODE |
| HIGH | …caibench/atkdef/checkers_local/reactorwatch_checker.py | 222 | "cat /home/reactor_op/user.txt 2>/dev/null || echo ''" | CODE |
| HIGH | …caibench/atkdef/checkers_local/reactorwatch_checker.py | 240 | "cat /root/root.txt 2>/dev/null || echo ''" | CODE |
| HIGH⚡ | …/caibench/atkdef/checkers_local/securevault_checker.py | 438 | "ls -la /var/run/docker.sock 2>/dev/null || echo 'not found'" | CODE |
| HIGH | …/caibench/atkdef/checkers_local/securevault_checker.py | 300 | "cat /home/vaultuser/user.txt 2>/dev/null || echo ''" | CODE |
| HIGH | …/caibench/atkdef/checkers_local/securevault_checker.py | 318 | "cat /root/root.txt 2>/dev/null || echo ''" | CODE |
| HIGH | …/caibench/atkdef/checkers_local/securevault_checker.py | 449 | "ls -la /usr/local/bin/backup_reader 2>/dev/null || echo 'not found'" | CODE |
| HIGH | …cai/caibench/atkdef/checkers_local/docuflow_checker.py | 256 | "cat /home/developer/user.txt 2>/dev/null || echo ''" | CODE |
| HIGH | …cai/caibench/atkdef/checkers_local/docuflow_checker.py | 274 | "cat /root/root.txt 2>/dev/null || echo ''" | CODE |
| HIGH⚡ | …cai/caibench/atkdef/checkers_local/fortress_checker.py | 176 | "test -f /opt/backups/passwords.bak && echo 'exists'" | CODE |
| HIGH⚡ | …cai/caibench/atkdef/checkers_local/fortress_checker.py | 190 | "test -f /lib/security/pam_fortress.so && echo 'exists'" | CODE |
| HIGH⚡ | …cai/caibench/atkdef/checkers_local/fortress_checker.py | 208 | "test -f /home/diego/user.txt && echo 'exists'" | CODE |
| HIGH⚡ | …cai/caibench/atkdef/checkers_local/fortress_checker.py | 223 | "test -f /root/root.txt.enc && echo 'exists'" | CODE |
| HIGH⚡ | …cai/caibench/atkdef/checkers_local/fortress_checker.py | 238 | "test -f /root/decrypt_flag.py && echo 'exists'" | CODE |
| HIGH | src/cai/continuous_ops/model_parse.py | 469 | "use_tmux (boolean or null), " | CODE |
| 2 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | README.md | 161 | | 🛡️ **Maintained injection defenses** | CAI's four-layer guardrail framework ([arXiv:2508.21669](https://arxiv.org/abs/ | CODE |
| MEDIUM | README.md | 235 | | **[Towards CSI: What's the best harness for cybersecurity?](https://arxiv.org/abs/2605.28334)**<br><sub>`arXiv:2605.28 | CODE |
| MEDIUM | README.md | 294 | | 🌐 IT · Bug Bounty | **[HackerOne Platform](https://aliasrobotics.com/case-study-hackerone.php)** | HackerOne engineers | CODE |
| MEDIUM | tools/templates/case-study.php | 101 | <h2 class="py-4"><a style="color:#63bfab">Cybersecurity AI (CAI)</a>, the <i>de facto</i> scaffolding fo | CODE |
| MEDIUM | tests/tools/test_generic_linux_command_guardrails.py | 11 | # All tests should run with guardrails enabled | COMMENT |
| MEDIUM⚡ | tests/tools/web/test_fetch_url.py | 182 | # Integration-ish tests: orchestration via httpx.MockTransport. | COMMENT |
| MEDIUM⚡ | tests/agents/test_items_helpers.py | 131 | # Create a non-message run item of a different type, e.g., a reasoning trace. | COMMENT |
| MEDIUM | docs/guardrails.md | 10 | ## Input guardrails | COMMENT |
| MEDIUM | docs/guardrails.md | 22 | ## Output guardrails | COMMENT |
| MEDIUM | docs/cai_prompt_injection.md | 29 | ### 1. **Input Guardrails** (`src/cai/agents/guardrails.py`) | COMMENT |
| MEDIUM | docs/cai_prompt_injection.md | 62 | ### Updated Agents (added guardrails) | COMMENT |
| MEDIUM | docs/quickstart.md | 80 | ## Run the agent orchestration | COMMENT |
| MEDIUM | docs/cai_citation_and_acknowledgments.md | 19 | CAI was initially developed by [Alias Robotics](https://aliasrobotics.com) and co-funded by the European EIC accelerator | CODE |
| MEDIUM | docs/index2.md | 3 | The [OpenAI Agents SDK](https://github.com/openai/openai-agents-python) enables you to build agentic AI apps in a lightw | CODE |
| MEDIUM | docs/index.md | 103 | - 🛡️ [**Prompt Injection Defense**](https://arxiv.org/pdf/2508.21669) - Security guardrails for AI agents | CODE |
| MEDIUM | docs/index.md | 224 | CAI was initially developed by [Alias Robotics](https://aliasrobotics.com) and co-funded by the European EIC accelerator | CODE |
| MEDIUM | docs/environment_variables.md | 171 | # Security guardrails | COMMENT |
| MEDIUM | docs/cai/architecture/overview.md | 34 | ├── core.py # core implementation and agentic flow | CODE |
| MEDIUM | docs/cai/architecture/overview.md | 43 | │ └── patterns # agentic patterns, one per file | CODE |
| MEDIUM | examples/agent_patterns/input_guardrails.py | 31 | ### 1. An agent-based guardrail that is triggered if the user is asking to do math homework | COMMENT |
| MEDIUM | examples/agent_patterns/agents_as_tools.py | 61 | # Run the entire orchestration in a single trace | COMMENT |
| MEDIUM | examples/agent_patterns/README.md | 1 | # Common agentic patterns | COMMENT |
| MEDIUM | src/cai/config.py | 21 | # Auto-compact never waits beyond this fraction of the model context window, | COMMENT |
| MEDIUM | src/cai/output.py | 118 | # --- Compact / orchestration events --- | COMMENT |
| MEDIUM | src/cai/tools/misc/approach_contest.py | 72 | # orchestration system prompt instructs the LLM to never quote/paraphrase | COMMENT |
| MEDIUM | src/cai/tools/misc/approach_contest.py | 372 | # boxes); only the orchestration agent's final synthesis is meant to | COMMENT |
| MEDIUM⚡ | src/cai/tools/reconnaissance/generic_linux_command.py | 563 | # This is an additional layer of defense beyond the guardrails | COMMENT |
| MEDIUM | src/cai/util/wait_hints.py | 77 | # Concurrent loops (e.g. orchestration spawns several specialist Runners that | COMMENT |
| MEDIUM⚡ | src/cai/util/pricing.py | 1115 | # Determine if we're in multi-agent mode (TUI or parallel) | COMMENT |
| MEDIUM⚡ | src/cai/util/pricing.py | 1125 | # In multi-agent mode, try to get agent-specific state from COST_TRACKER | COMMENT |
| MEDIUM⚡ | src/cai/util/pricing.py | 1131 | # CRITICAL: In multi-agent mode, only use agent-specific state, not global COST_TRACKER values | COMMENT |
| MEDIUM⚡ | src/cai/util/pricing.py | 1139 | # CRITICAL FIX: Always fall back to COST_TRACKER if still 0, even in multi-agent mode | COMMENT |
| MEDIUM⚡ | src/cai/util/pricing.py | 1140 | # The previous logic skipped this fallback in multi-agent mode, causing "In: 0 Out: 0" displays | COMMENT |
| MEDIUM | src/cai/util/streaming.py | 1760 | # Sub-agents invoked as tools by the orchestration agent must not paint | COMMENT |
| MEDIUM⚡ | src/cai/tui/cai_terminal.py | 396 | # Startup config (YAML-based multi-agent) | COMMENT |
| MEDIUM | src/cai/tui/components/sidebar.py | 1387 | # Emit event for the app to handle orchestration | COMMENT |
| MEDIUM | src/cai/tui/components/sidebar.py | 1615 | # Get agent info - prefer session manager for multi-agent accuracy | COMMENT |
| MEDIUM | src/cai/tui/components/sidebar.py | 1624 | # Try to get info from TUI session manager first (for multi-agent mode) | COMMENT |
| MEDIUM | src/cai/tui/components/sidebar.py | 1693 | # Mark that we have multi-agent info | COMMENT |
| MEDIUM | src/cai/repl/commands/graph.py | 410 | # Fall back to standard multi-agent graph | COMMENT |
| MEDIUM | src/cai/repl/commands/load.py | 421 | # 2. "sender" field (used in multi-agent logs) | COMMENT |
| MEDIUM | src/cai/agents/one_tool.py | 31 | # Get security guardrails for this high-risk agent | COMMENT |
| MEDIUM⚡ | src/cai/agents/gctr_mixin.py | 191 | # SharedCTRHooks class (purple / multi-agent variant) | COMMENT |
| MEDIUM | src/cai/agents/apt_agent.py | 71 | # Get security guardrails to ensure responsible use | COMMENT |
| MEDIUM⚡ | src/cai/agents/guardrails.py | 527 | # Check if guardrails are disabled via environment variable | COMMENT |
| MEDIUM⚡ | src/cai/agents/guardrails.py | 531 | # Return empty lists to disable all guardrails | COMMENT |
| MEDIUM⚡ | src/cai/agents/guardrails.py | 534 | # Return the configured guardrails | COMMENT |
| MEDIUM | src/cai/agents/guardrails.py | 266 | # Check if guardrails are disabled at runtime | COMMENT |
| MEDIUM | src/cai/agents/guardrails.py | 387 | # Check if guardrails are disabled at runtime | COMMENT |
| MEDIUM | src/cai/agents/web_pentester.py | 40 | # Security guardrails to dampen prompt-injection from untrusted web content | COMMENT |
| MEDIUM | src/cai/agents/red_teamer.py | 64 | # Get security guardrails | COMMENT |
| MEDIUM | src/cai/agents/bug_bounter.py | 64 | # Get security guardrails | COMMENT |
| MEDIUM | src/cai/continuous_ops/loop_runner.py | 542 | # Selection/orchestration agents need 'auto' routing; pinned workers (e.g. blueteam_agent) | COMMENT |
| MEDIUM | src/cai/sdk/agents/run.py | 578 | # We'll run the guardrails and push them onto the queue as they complete | COMMENT |
| MEDIUM | src/cai/sdk/agents/run.py | 667 | # Run the input guardrails in the background and put the results on the queue | COMMENT |
| MEDIUM | src/cai/sdk/agents/models/openai_chatcompletions.py | 1602 | # Sub-agents invoked as tools by the orchestration agent must not | COMMENT |
| MEDIUM | src/cai/sdk/agents/models/openai_chatcompletions.py | 4409 | # pricing heuristics overestimate the true context window (e.g. alias models). | COMMENT |
| MEDIUM | …ai/sdk/agents/models/chatcompletions/auto_compactor.py | 101 | # Runtime override: pin effective context window when the provider reports | COMMENT |
| MEDIUM | src/cai/prompts/core/system_master_template.md | 3 | # for constructing system prompts for CAI's agentic | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/tpm_test.py | 37 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/cli/__init__.py | 10 | __all__ = ["BaseCLITest"] | CODE |
| LOW | src/cai/config_loader.py | 301 | __all__ = [ | CODE |
| LOW | src/cai/continuation.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/cai/cli.py | 57 | __all__ = [ | CODE |
| LOW | src/cai/tools/evidence/__init__.py | 9 | __all__ = [ | CODE |
| LOW | …ibench/artifacts/just_another_pickle_jail/my_pickle.py | 39 | __all__ = ["PickleError", "PicklingError", "UnpicklingError", "Pickler", | CODE |
| LOW | src/cai/util/gateway_rate_limiter.py | 101 | def update_actual(self, actual_total_tokens: int) -> None: | CODE |
| LOW⚡ | src/cai/util/wait_hints.py | 100 | def _set_model_wait_body(body: str | None) -> None: | CODE |
| LOW⚡ | src/cai/util/wait_hints.py | 106 | def _set_tool_wait_body(body: str | None) -> None: | CODE |
| LOW⚡ | src/cai/util/wait_hints.py | 692 | def set_model_wait_retry_overlay(message: str | None) -> None: | CODE |
| LOW | src/cai/util/wait_hints.py | 125 | def set_compact_live_owner(active: bool) -> None: | CODE |
| LOW | src/cai/util/_worker_silence.py | 80 | __all__ = ["silence_worker_display", "worker_display_silenced"] | CODE |
| LOW | src/cai/util/session.py | 29 | __all__ = ["is_parallel_session"] | CODE |
| LOW | src/cai/util/pricing.py | 469 | def update_session_cost(self, new_cost: float) -> None: | CODE |
| LOW | src/cai/util/user_prompts.py | 1855 | __all__ = [ | CODE |
| LOW | src/cai/tui/config.py | 46 | def set_theme(self, theme: str) -> None: | CODE |
| LOW | src/cai/tui/__init__.py | 5 | __all__ = ["CAITerminal", "run_cai_tui"] | CODE |
| LOW⚡ | src/cai/tui/cai_terminal.py | 681 | def _update_mode(self, mode: str) -> None: | CODE |
| LOW⚡ | src/cai/tui/cai_terminal.py | 1184 | def update_layout_indicator(self) -> None: | CODE |
| LOW | src/cai/tui/core/terminal_runner.py | 826 | async def update_model(self, model_name: str, silent: bool = False) -> None: | CODE |
| LOW | src/cai/tui/core/prompt_queue.py | 37 | def set_process_callback(self, callback: Callable) -> None: | CODE |
| LOW | src/cai/tui/core/terminal_console.py | 86 | def set_terminal_console(terminal_id: str, console: TerminalConsole) -> None: | CODE |
| LOW | src/cai/tui/core/session_manager.py | 101 | async def update_terminal_agent(self, terminal_number: int, agent_name: str) -> None: | CODE |
| LOW | src/cai/tui/core/session_manager.py | 399 | def set_parallel_mode(self, enabled: bool) -> None: | CODE |
| LOW | src/cai/tui/core/session_manager.py | 415 | async def update_model(self, model_name: str, terminal_number: Optional[int] = None, silent: bool = False) -> None: | CODE |
| LOW | src/cai/tui/core/__init__.py | 9 | __all__ = ["TerminalRunner", "AgentExecutor", "SessionManager"] | CODE |
| LOW | src/cai/tui/core/environment_overrides.py | 156 | __all__ = ["environment_override", "async_environment_override"] | CODE |
| LOW⚡ | src/cai/tui/core/terminal_tracking.py | 23 | def set_current_terminal_id(terminal_id: str) -> None: | CODE |
| LOW | src/cai/tui/patterns/__init__.py | 16 | __all__ = [ | CODE |
| LOW | src/cai/tui/controller/__init__.py | 10 | __all__ = ["AgentController", "InputController", "RouteKind", "RouteDecision"] | CODE |
| LOW | src/cai/tui/components/graph_canvas.py | 924 | def _set_status(self, msg: str) -> None: | CODE |
| LOW⚡ | src/cai/tui/components/streaming_status_bar.py | 716 | def update_streaming_text(self, text: str) -> None: | CODE |
| LOW⚡ | src/cai/tui/components/streaming_status_bar.py | 1344 | def _update_animation(self) -> None: | CODE |
| LOW⚡ | src/cai/tui/components/streaming_status_bar.py | 1352 | def _update_executing_message(self) -> None: | CODE |
| LOW⚡ | src/cai/tui/components/streaming_status_bar.py | 1572 | def set_compact(self, compact: bool = True) -> None: | CODE |
| LOW | src/cai/tui/components/streaming_status_bar.py | 1260 | def _update_cursor_blink(self) -> None: | CODE |
| LOW | src/cai/tui/components/streaming_status_bar.py | 1471 | def set_action(self, action: str, animation: str = "streaming") -> None: | CODE |
| LOW | src/cai/tui/components/ctr_graph_viewport.py | 79 | def set_graph(self, nodes: List[Dict], edges: List[Dict], defense: Dict[str, float]) -> None: | STRING |
| LOW | src/cai/tui/components/ctr_graph_viewport.py | 222 | def set_vert_gain(self, gain: float) -> None: | CODE |
| LOW⚡ | src/cai/tui/components/universal_terminal.py | 1879 | def _update_streaming_display(self, line_id: str) -> None: | CODE |
| LOW | src/cai/tui/components/universal_terminal.py | 90 | def _setup_options_renderables(self) -> None: | CODE |
| LOW | src/cai/tui/components/universal_terminal.py | 1207 | async def _update_visual_state(self) -> None: | CODE |
| LOW | src/cai/tui/components/universal_terminal.py | 1236 | def _update_header(self) -> None: | CODE |
| LOW | src/cai/tui/components/universal_terminal.py | 1496 | def set_summarized_mode(self, enabled: bool) -> None: | CODE |
| LOW | src/cai/tui/components/universal_terminal.py | 1855 | def update_streaming_line(self, line_id: str, content: str) -> None: | CODE |
| LOW | src/cai/tui/components/universal_terminal.py | 2033 | def set_running(self, running: bool) -> None: | CODE |
| LOW | src/cai/tui/components/universal_terminal.py | 574 | def _set_container_prompt(self, select_widget, value: str) -> None: | STRING |
| LOW⚡ | src/cai/tui/components/info_status_bar.py | 324 | def _update_agent_model_info(self) -> None: | CODE |
| LOW⚡ | src/cai/tui/components/info_status_bar.py | 726 | def _update_separator_visibility(self) -> None: | CODE |
| LOW⚡ | src/cai/tui/components/info_status_bar.py | 731 | def _update_dynamic_separator_visibility(self) -> None: | CODE |
| LOW | src/cai/tui/components/info_status_bar.py | 170 | def _update_info(self) -> None: | CODE |
| LOW | src/cai/tui/components/info_status_bar.py | 376 | def _update_workspace_info(self) -> None: | CODE |
| LOW | src/cai/tui/components/info_status_bar.py | 406 | def _update_cost_token_info(self) -> None: | CODE |
| LOW | src/cai/tui/components/info_status_bar.py | 441 | def _update_context_memory_info(self) -> None: | CODE |
| LOW | src/cai/tui/components/info_status_bar.py | 480 | def _update_queue_history_info(self) -> None: | CODE |
| LOW | src/cai/tui/components/info_status_bar.py | 518 | def _update_status_info(self) -> None: | CODE |
| LOW | src/cai/tui/components/info_status_bar.py | 654 | def update_from_usage(self, usage_data: Dict[str, Any]) -> None: | CODE |
| LOW | src/cai/tui/components/info_status_bar.py | 675 | def _update_responsive_display(self) -> None: | CODE |
| LOW | src/cai/tui/components/info_status_bar.py | 777 | def set_error(self, error_message: str) -> None: | CODE |
| 83 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/refusals/test_jailbreak_s3_exfiltration.py | 1036 | ### Step 1: Identify the bucket ✓ | COMMENT |
| LOW⚡ | tests/refusals/test_jailbreak_s3_exfiltration.py | 1040 | ### Step 2: Check public access ✓ | COMMENT |
| LOW⚡ | tests/refusals/test_jailbreak_s3_exfiltration.py | 1043 | ### Step 3: Create local folder ✓ | COMMENT |
| LOW⚡ | tests/commands/test_command_history.py | 648 | # Step 1: Initial user message | COMMENT |
| LOW⚡ | tests/commands/test_command_history.py | 650 | # Step 2: Assistant response | COMMENT |
| LOW⚡ | tests/commands/test_command_history.py | 655 | # Step 3: User asks for help | COMMENT |
| LOW⚡ | tests/commands/test_command_history.py | 661 | # Step 4: Assistant with tool call | COMMENT |
| LOW | tests/commands/test_command_history.py | 681 | # Step 5: Tool response | COMMENT |
| LOW | docs/tui/getting_started.md | 19 | ## Step 1: Launch the TUI | COMMENT |
| LOW | docs/tui/getting_started.md | 30 | ## Step 2: Configure Your API Key | COMMENT |
| LOW | docs/tui/getting_started.md | 66 | ## Step 3: Select Your Model | COMMENT |
| LOW | docs/tui/getting_started.md | 99 | ## Step 4: Choose Your Agent | COMMENT |
| LOW | docs/tui/getting_started.md | 148 | ## Step 5: Start Your First Conversation | COMMENT |
| LOW | docs/tui/getting_started.md | 206 | ## Step 6: Working with Multiple Terminals | COMMENT |
| LOW | docs/tui/getting_started.md | 234 | ## Step 7: Using Preconfigured Teams | COMMENT |
| LOW | docs/tui/getting_started.md | 254 | ## Step 8: Saving Your Work | COMMENT |
| LOW | docs/tui/getting_started.md | 282 | ## Step 9: Monitoring Costs | COMMENT |
| LOW | docs/mui/getting_started.md | 19 | ### Step 1: Join TestFlight Beta | COMMENT |
| LOW | docs/mui/getting_started.md | 26 | ### Step 2: Launch the App | COMMENT |
| LOW⚡ | examples/cai/agent_patterns/deterministic.py | 50 | # Step 1: Execute command in CTF environment | COMMENT |
| LOW⚡ | examples/cai/agent_patterns/deterministic.py | 55 | # Step 2: Pass result to flag discriminator | COMMENT |
| LOW⚡ | examples/cai/agent_patterns/handoffs.py | 85 | # Step 1: Execute a command with the CTF agent | COMMENT |
| LOW⚡ | examples/cai/agent_patterns/handoffs.py | 88 | # Step 2: Ask an additional question for calling the Flag Discriminator agent | COMMENT |
| LOW | src/cai/caibench/cyber_ranges/README.md | 25 | ### Step 1: Navigate to the Cyber Range Directory | COMMENT |
| LOW⚡ | src/cai/caibench/cyber_ranges/README.md | 37 | ### Step 2: Start the Environment | COMMENT |
| LOW⚡ | src/cai/caibench/cyber_ranges/README.md | 47 | ### Step 3: Verify Containers are Running | COMMENT |
| LOW⚡ | src/cai/caibench/cyber_ranges/README.md | 55 | ### Step 4: Check Logs (Optional) | COMMENT |
| LOW | src/cai/caibench/cyber_ranges/easy_techcorp2/README.md | 275 | ### Step 1: Start Caldera Server | COMMENT |
| LOW | src/cai/caibench/cyber_ranges/easy_techcorp2/README.md | 293 | ### Step 2: Start TechCorp Targets | COMMENT |
| LOW | src/cai/caibench/cyber_ranges/easy_techcorp2/README.md | 301 | ### Step 3: Deploy Caldera Agents to Targets | COMMENT |
| LOW | src/cai/caibench/cyber_ranges/easy_techcorp2/README.md | 340 | ### Step 4: Launch CAI Caldera Agent | COMMENT |
| LOW | src/cai/caibench/cyber_ranges/poo-range/README.md | 94 | ### Step 1: Initial Reconnaissance | COMMENT |
| LOW | src/cai/caibench/cyber_ranges/poo-range/README.md | 107 | ### Step 2: Web Enumeration - Find .DS_Store | COMMENT |
| LOW | src/cai/caibench/cyber_ranges/poo-range/README.md | 130 | ### Step 3: IIS Shortname Enumeration with Metasploit | COMMENT |
| LOW | src/cai/caibench/cyber_ranges/poo-range/README.md | 163 | ### Step 4: Fuzz for Full Filename with wfuzz | COMMENT |
| LOW | src/cai/caibench/cyber_ranges/poo-range/README.md | 192 | ### Step 5: Access Database Credentials (Flag 1) | COMMENT |
| LOW | src/cai/caibench/cyber_ranges/poo-range/README.md | 209 | ### Step 6: Connect to Database | COMMENT |
| LOW | src/cai/caibench/cyber_ranges/poo-range/README.md | 216 | ### Step 7: Check for Sysadmin Privileges | COMMENT |
| LOW | src/cai/caibench/cyber_ranges/poo-range/README.md | 240 | ### Step 8: Enumerate Linked Servers | COMMENT |
| LOW | src/cai/caibench/cyber_ranges/poo-range/README.md | 259 | ### Step 9: Query the Linked Server | COMMENT |
| LOW | src/cai/caibench/cyber_ranges/poo-range/README.md | 286 | ### Step 10: Exploit Circular Link for Privilege Escalation | COMMENT |
| LOW | src/cai/caibench/cyber_ranges/poo-range/README.md | 299 | ### Step 11: Read Flag from Database (Flag 2) | COMMENT |
| LOW | src/cai/caibench/cyber_ranges/poo-range/README.md | 313 | ### Step 12: Command Execution with xp_cmdshell | COMMENT |
| LOW | src/cai/caibench/cyber_ranges/poo-range/README.md | 345 | ### Step 13: Use sp_execute_external_script for Different Context | COMMENT |
| LOW | src/cai/caibench/cyber_ranges/poo-range/README.md | 392 | ### Step 14: Verify Admin Credentials from Config Table | COMMENT |
| LOW | src/cai/caibench/cyber_ranges/poo-range/README.md | 412 | ### Step 15: Access Web Admin Panel (Flag 3 - FINAL) | COMMENT |
| LOW⚡ | …anges/poo-range/attacker/tools/pg_linked_escalation.py | 65 | # Step 1: Check what user we are on POO_CONFIG | COMMENT |
| LOW⚡ | …anges/poo-range/attacker/tools/pg_linked_escalation.py | 71 | # Step 2: Check if POO_CONFIG has a link back to POO_PUBLIC | COMMENT |
| LOW⚡ | …anges/poo-range/attacker/tools/pg_linked_escalation.py | 78 | # Step 3: Execute through circular link to get superuser | COMMENT |
| LOW | src/cai/caibench/atkdef/README.md | 84 | #### Step 1: Clone and Setup Environment | COMMENT |
| LOW | src/cai/caibench/atkdef/README.md | 97 | #### Step 2: Configure the Game | COMMENT |
| LOW | src/cai/caibench/atkdef/README.md | 113 | #### Step 3: Start the Game Server | COMMENT |
| LOW | src/cai/caibench/atkdef/README.md | 124 | #### Step 4: Start the Game | COMMENT |
| LOW | src/cai/caibench/atkdef/README.md | 133 | #### Step 5: Launch AI Agents for Each Team | COMMENT |
| LOW | src/cai/caibench/atkdef/README.md | 149 | #### Step 6: Monitor the Competition | COMMENT |
| LOW | src/cai/caibench/atkdef/README.md | 154 | #### Step 7: Stop the Competition | COMMENT |
| LOW | src/cai/caibench/atkdef/README.md | 552 | #### Step 1: Create Checker File | COMMENT |
| LOW | src/cai/caibench/atkdef/README.md | 572 | #### Step 2: Implement Service Availability Check | COMMENT |
| LOW⚡ | src/cai/caibench/atkdef/README.md | 602 | #### Step 3: Implement Functionality Check | COMMENT |
| LOW | src/cai/caibench/atkdef/README.md | 633 | #### Step 4: Implement Flag Operations | COMMENT |
| 19 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/cai/config_loader.py | 49 | Load agent configuration data from YAML. Args: path: Optional explicit path to ``agents.yml``. When ``None` | STRING |
| HIGH | src/cai/tools/network/capture_traffic.py | 17 | Captures network traffic from a remote VM and returns a pipe that can be read by tshark. Args: ip (str | STRING |
| HIGH | src/cai/tools/others/scripting.py | 17 | Scripting tool for executing Python code directly in memory. IMPORTANT: Use with caution - executes Python code dire | STRING |
| HIGH | src/cai/tools/reconnaissance/generic_linux_command.py | 312 | Execute commands with session management. Use this tool to run any command. The system automatically detects a | STRING |
| HIGH | src/cai/tui/utils/terminal_parser.py | 10 | Parse terminal target from command arguments. Looks for terminal specifiers like 't1', 'T2', etc. at the e | STRING |
| HIGH | src/cai/ctr/digest.py | 269 | Generate CTR digest using algorithmic rule-based interpretation. This function parses CTR results and applies deter | STRING |
| HIGH | src/cai/ctr/digest.py | 448 | Generate CTR digest using LLM-based interpretation. This function sends CTR analysis results to an LLM for flexible | STRING |
| HIGH | src/cai/ctr/digest.py | 593 | Get CTR digest with specified interpretation mode (async version). Example of CTR digest with mode "algorithmic": | STRING |
| HIGH | src/cai/ctr/digest.py | 681 | Get CTR digest with specified interpretation mode (sync wrapper with caching). This function implements intelligent | STRING |
| HIGH | src/cai/ctr/probability_computation.py | 135 | Multi-Factor Edge Probability Computation: Calculate attack path exploitation probabilities. Implements th | STRING |
| HIGH | src/cai/ctr/attack_graph.py | 120 | Graph Construction: Transform LLM output into NetworkX directed graph. Converts structured LLM agent outpu | STRING |
| HIGH | src/cai/ctr/experiment.py | 694 | LLM Graph Extraction: Process conversation log into attack graph structure. Orchestrates the extraction of | STRING |
| HIGH | src/cai/repl/commands/help.py | 56 | Create a notes panel with consistent formatting. Args: notes: List of note strings title: Panel tit | STRING |
| HIGH | src/cai/agents/__init__.py | 249 | Get a NEW agent instance by name using the dynamic factory system. Args: agent_name: Name of the agent | STRING |
| HIGH | src/cai/agents/factory.py | 238 | Get a factory function for creating instances of the specified agent. Args: agent_name: Name of the ag | STRING |
| HIGH | src/cai/agents/codeagent.py | 134 | Extract Python code blocks from the text, with fallback detection for non-marked code. This function first | STRING |
| HIGH | src/cai/agents/codeagent.py | 497 | Generate Python code based on the conversation history. This method uses the LLM to generate Python co | STRING |
| HIGH | src/cai/agents/codeagent.py | 593 | Execute the Python code and return the result. Args: code (str): Python code to execute | STRING |
| HIGH | src/cai/agents/patterns/utils.py | 14 | Convert a pattern to a list of ParallelConfig objects. Args: pattern: Either a Pattern instance or pattern | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/cli.bash | 1 | # Script to set up various CLI assistants | COMMENT |
| LOW | tests/refusals/run_all_400_tests.sh | 1 | #!/bin/bash | COMMENT |
| LOW | .devcontainer/docker-compose.yml | 21 | cap_add: | COMMENT |
| LOW | .devcontainer/docker-compose.yml | 41 | # cainet: | COMMENT |
| LOW | .devcontainer/docker-compose.yml | 61 | # - "6333:6333" | COMMENT |
| LOW | .devcontainer/docker-compose.yml | 81 | # | COMMENT |
| LOW | .devcontainer/docker-compose.yml | 101 | # 1. SSH into container, head to /app5 and then run: | COMMENT |
| LOW | .devcontainer/docker-compose.yml | 121 | # PoC 8 (Multi-layer encoding - base64->base32): | COMMENT |
| LOW | .devcontainer/docker-compose.yml | 141 | # | COMMENT |
| LOW | .devcontainer/docker-compose.yml | 161 | # 3. Manually, it can be validated invoking "curl -i -s -X POST -d "input=Hello;$(env)" http://192.168.3.14:8000" | COMMENT |
| LOW | .devcontainer/devcontainer.json | 1 | // For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: | COMMENT |
| LOW | examples/__init__.py | 1 | # Make the examples directory into a package to avoid top-level module name collisions. | COMMENT |
| LOW | examples/datasets/pentest-R1/findjsonl.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | examples/basic/lifecycle_example.py | 101 | asyncio.run(main()) | COMMENT |
| LOW | examples/basic/agent_lifecycle_example.py | 101 | ### (Start Agent) 1: Agent Start Agent started | COMMENT |
| LOW | examples/basic/stream_items.py | 41 | print("=== Run complete ===") | COMMENT |
| LOW | examples/basic/stream_items.py | 61 | # Because he was outstanding in his field! | COMMENT |
| LOW | .github/workflows/tests.yml | 21 | # uses: actions/checkout@v4 | COMMENT |
| LOW | .github/workflows/tests.yml | 101 | # uses: actions/checkout@v4 | COMMENT |
| LOW | src/cai/config.py | 121 | orchestration_mas_hint: bool = True | COMMENT |
| LOW | src/cai/tools/executor.py | 541 | print(color(error_msg, fg="red")) | COMMENT |
| LOW | src/cai/caibench/ctf.py | 401 | # NOTE: contributed by @luijait, but this disrupts assumption | COMMENT |
| LOW | src/cai/caibench/cli.py | 61 | COMMENT | |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 1 | # Example config file for ansible -- https://ansible.com/ | COMMENT |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 21 | #ask_pass = False | COMMENT |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 41 | # You can negate them using ! (ex: !hardware,!facter,!ohai) | COMMENT |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 61 | #inject_facts_as_vars = True | COMMENT |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 81 | # this is done to avoid running all of a type by default. | COMMENT |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 101 | #timeout = 10 | COMMENT |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 121 | # By default, variables from roles will be visible in the global variable | COMMENT |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 141 | # Format of string {{ ansible_managed }} available within Jinja2 | COMMENT |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 161 | # not the task's args. This is a security feature because ansible cannot know | COMMENT |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 181 | #system_warnings = True | COMMENT |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 201 | #become_plugins = /usr/share/ansible/plugins/become | COMMENT |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 221 | #bin_ansible_callbacks = False | COMMENT |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 241 | # hellokitty,kitty,luke-koala,meow,milk,moofasa,moose,ren,sheep,small,stegosaurus,\ | COMMENT |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 261 | #fact_caching_connection=/tmp | COMMENT |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 281 | # https://docs.ansible.com/ansible/latest/user_guide/become.html#becoming-an-unprivileged-user | COMMENT |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 301 | # Controls showing custom stats at the end, off by default | COMMENT |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 321 | # set default errors for all plays | COMMENT |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 341 | #become_method = sudo | COMMENT |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 361 | COMMENT | |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 381 | COMMENT | |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 401 | # first disable 'requiretty' in /etc/sudoers | COMMENT |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 421 | COMMENT | |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 441 | # expires, the connection is shutdown. The default value is 30 seconds. | COMMENT |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 461 | COMMENT | |
| LOW | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 481 | #unreachable = red | COMMENT |
| LOW | src/cai/caibench/cyber_ranges/easy_techcorp2/README.md | 201 | # Try to access database credentials (will fail) | COMMENT |
| LOW | …aibench/cyber_ranges/easy_techcorp2/docker-compose.yml | 1 | version: "3.9" | COMMENT |
| LOW | …obaltGroupRansomware/infra/office/hr/simulate_phish.py | 21 | with open(TARGET_PATH, 'wb') as f: | COMMENT |
| LOW | …s/CobaltGroupRansomware/infra/server/backup/README.txt | 1 | # Dummy File for Backup Server | COMMENT |
| LOW | src/cai/caibench/atkdef/README.md | 101 | COMMENT | |
| LOW | src/cai/caibench/atkdef/start.sh | 21 | #echo "Setting up pyproject.toml..." | COMMENT |
| LOW | src/cai/util/gateway_rate_limiter.py | 41 | # :meth:`Reservation.update_actual`, so this only matters for the first | COMMENT |
| LOW | src/cai/util/user_prompts.py | 61 | from rich.text import Text | COMMENT |
| LOW | src/cai/util/user_prompts.py | 1261 | # caching, ``sudo -S -v`` validation, post-execution elevation). The guard | COMMENT |
| LOW | src/cai/tui/components/graph_canvas.py | 81 | """CTR interactive graph viewer bound to CTR run outputs.""" | COMMENT |
| LOW | src/cai/tui/components/autocomplete_input.py | 101 | return | COMMENT |
| LOW | src/cai/tui/display/tool_display.py | 361 | # Only show final panel when streaming completes | COMMENT |
| 13 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/case_study_generator.py | 281 | # just use the prompt with all the context embedded in it | COMMENT |
| MEDIUM | tools/cut_the_rope/benchmark/paper_ctr_tokenscost.py | 128 | # NEW: One comprehensive plot per model showing all metrics (MESSAGES ONLY) | COMMENT |
| MEDIUM | tools/cut_the_rope/benchmark/paper_ctr_tokenscost.py | 137 | # Create one comprehensive plot per model (using messages for x-axis) | COMMENT |
| MEDIUM | tools/cut_the_rope/benchmark/paper_ctr_tokenscost.py | 203 | # NEW: One comprehensive plot per model showing all metrics (TOKENS ONLY) | COMMENT |
| MEDIUM | tools/cut_the_rope/benchmark/paper_ctr_tokenscost.py | 206 | # Create one comprehensive plot per model (using tokens for x-axis) | COMMENT |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 2190 | """Print comprehensive summary table of all test results with bypass rates.""" | STRING |
| MEDIUM | tests/refusals/test_jailbreak_s3_exfiltration.py | 2555 | # Print comprehensive summary | STRING |
| LOW | examples/customer_service/main.py | 141 | # Here, we'll just use a random UUID for the conversation ID | COMMENT |
| MEDIUM | src/cai/util/terminal.py | 340 | """Human-friendly time formatter (robust). | STRING |
| MEDIUM | src/cai/util/pricing.py | 778 | # This has the most comprehensive and up-to-date pricing database | COMMENT |
| MEDIUM | src/cai/tui/meta_agent_controller.py | 27 | # Meta Agent System Prompt with comprehensive command documentation | COMMENT |
| LOW | src/cai/tui/core/terminal_runner.py | 863 | # If no agent yet, just return (will use new model on next init) | COMMENT |
| LOW | src/cai/tui/components/sidebar.py | 2487 | # Last resort - just pass | COMMENT |
| MEDIUM | src/cai/tui/components/agent_creator_panel.py | 487 | # Meta agent prompt to create comprehensive agent configuration | COMMENT |
| MEDIUM⚡ | src/cai/tui/components/universal_terminal.py | 707 | # Match by id prefix or class to be robust across Textual versions | COMMENT |
| LOW⚡ | src/cai/tui/components/info_status_bar.py | 317 | # Last resort - just set simple text | COMMENT |
| MEDIUM | src/cai/tui/components/agent_selector_panel.py | 332 | # Get the agent base name from stored attribute (robust across Textual versions) | COMMENT |
| MEDIUM | src/cai/tui/display/panel_formatter.py | 170 | # Add comprehensive token stats if available | COMMENT |
| MEDIUM | src/cai/tui/display/panel_formatter.py | 227 | # Be robust to unexpected types | COMMENT |
| LOW⚡ | src/cai/tui/display/agent_display.py | 352 | # Don't wrap in "raw" - just use empty dict | COMMENT |
| MEDIUM | src/cai/tui/display/streaming_display.py | 872 | # Use PanelFormatter.create_agent_panel for comprehensive cost display | COMMENT |
| LOW | src/cai/ctr/experiment.py | 884 | # For other models, just use the JSON input | COMMENT |
| MEDIUM | src/cai/repl/commands/settings_validation.py | 487 | """Get comprehensive configuration status. | STRING |
| LOW | src/cai/repl/commands/_memory_monolith.py | 786 | # Read memory content - just use the entire content without filtering | COMMENT |
| LOW | src/cai/repl/commands/_settings_monolith.py | 2473 | # In CLI mode, just call the sync version | COMMENT |
| MEDIUM | src/cai/repl/commands/_settings_monolith.py | 1206 | """Show comprehensive system status.""" | STRING |
| LOW | src/cai/repl/commands/history.py | 304 | # If there are multiple agents with this P-ID, just use the first one | COMMENT |
| MEDIUM | src/cai/agents/codeagent.py | 690 | # Use a more robust approach with a context manager for signal | STRING |
| LOW | src/cai/agents/meta/local_python_executor.py | 1309 | # Constant -> just return the value | COMMENT |
| MEDIUM | src/cai/sdk/agents/run.py | 1000 | # Log tools used with robust type checking | COMMENT |
| LOW | src/cai/sdk/agents/_run_impl.py | 757 | # This is expected when cancelling - just return cancelled message | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/refusals/test_jailbreak_s3_exfiltration.py | 1036 | ### Step 1: Identify the bucket ✓ | COMMENT |
| LOW⚡ | tests/refusals/test_jailbreak_s3_exfiltration.py | 1040 | ### Step 2: Check public access ✓ | COMMENT |
| LOW⚡ | tests/refusals/test_jailbreak_s3_exfiltration.py | 1043 | ### Step 3: Create local folder ✓ | COMMENT |
| LOW⚡ | tests/refusals/test_jailbreak_s3_exfiltration.py | 1048 | ### Step 4: [INCOMPLETE - Please fill in] | COMMENT |
| LOW⚡ | tests/refusals/test_jailbreak_s3_exfiltration.py | 1051 | ### Step 5: [INCOMPLETE - Please fill in] | COMMENT |
| LOW⚡ | tests/refusals/test_jailbreak_s3_exfiltration.py | 1054 | ### Step 6: [INCOMPLETE - Please fill in] | COMMENT |
| LOW⚡ | tests/commands/test_command_history.py | 648 | # Step 1: Initial user message | COMMENT |
| LOW⚡ | tests/commands/test_command_history.py | 650 | # Step 2: Assistant response | COMMENT |
| LOW⚡ | tests/commands/test_command_history.py | 655 | # Step 3: User asks for help | COMMENT |
| LOW⚡ | tests/commands/test_command_history.py | 661 | # Step 4: Assistant with tool call | COMMENT |
| LOW | tests/commands/test_command_history.py | 681 | # Step 5: Tool response | COMMENT |
| LOW⚡ | examples/cai/agent_patterns/deterministic.py | 50 | # Step 1: Execute command in CTF environment | COMMENT |
| LOW⚡ | examples/cai/agent_patterns/deterministic.py | 55 | # Step 2: Pass result to flag discriminator | COMMENT |
| LOW⚡ | examples/cai/agent_patterns/handoffs.py | 85 | # Step 1: Execute a command with the CTF agent | COMMENT |
| LOW⚡ | examples/cai/agent_patterns/handoffs.py | 88 | # Step 2: Ask an additional question for calling the Flag Discriminator agent | COMMENT |
| LOW⚡ | …anges/poo-range/attacker/tools/pg_linked_escalation.py | 65 | # Step 1: Check what user we are on POO_CONFIG | COMMENT |
| LOW⚡ | …anges/poo-range/attacker/tools/pg_linked_escalation.py | 71 | # Step 2: Check if POO_CONFIG has a link back to POO_PUBLIC | COMMENT |
| LOW⚡ | …anges/poo-range/attacker/tools/pg_linked_escalation.py | 78 | # Step 3: Execute through circular link to get superuser | COMMENT |
| LOW⚡ | src/cai/util/user_prompts.py | 349 | # Step 0: best-effort cleanup of any pending residual auth status line | COMMENT |
| LOW⚡ | src/cai/util/user_prompts.py | 356 | # Step 1: pre-allocate. The \r before the up-arrow guards against | COMMENT |
| LOW⚡ | src/cai/util/user_prompts.py | 366 | # Step 2: anchor. | COMMENT |
| LOW⚡ | src/cai/util/user_prompts.py | 372 | # Step 3: yield + restore. | COMMENT |
| LOW⚡ | src/cai/repl/commands/_virtualization_monolith.py | 1829 | # Step 1: Check if we already have the fixed image | COMMENT |
| LOW⚡ | src/cai/repl/commands/_virtualization_monolith.py | 1836 | # Step 2: If we don't have a fixed image, create one | COMMENT |
| LOW⚡ | src/cai/repl/commands/_virtualization_monolith.py | 1914 | # Step 3: Check if a container with our fixed image is already running | STRING |
| LOW⚡ | src/cai/repl/commands/_virtualization_monolith.py | 1921 | # Step 4: If container exists, try to start it if needed | STRING |
| LOW⚡ | src/cai/repl/commands/_virtualization_monolith.py | 1966 | # Step 5: If no running container, create a new one | STRING |
| LOW⚡ | src/cai/repl/commands/_virtualization_monolith.py | 2027 | # Step 6: Set the container as active | STRING |
| LOW⚡ | src/cai/repl/commands/_virtualization_monolith.py | 2030 | # Step 7: Show success message | STRING |
| LOW⚡ | src/cai/agents/patterns/utils.py | 162 | # Now we need to check if the target agent has a handoff back to this agent | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/tracing/test_responses_tracing.py | 63 | "children": [{"type": "response", "data": {"response_id": "dummy-id"}}], | CODE |
| LOW⚡ | tests/tracing/test_responses_tracing.py | 137 | response=fake_model.get_response_obj([], "dummy-id-123"), | CODE |
| LOW⚡ | tests/tracing/test_responses_tracing.py | 155 | "children": [{"type": "response", "data": {"response_id": "dummy-id-123"}}], | CODE |
| LOW⚡ | tests/tracing/test_responses_tracing.py | 176 | response=fake_model.get_response_obj([], "dummy-id-123"), | CODE |
| LOW⚡ | tests/tracing/test_responses_tracing.py | 214 | response=fake_model.get_response_obj([], "dummy-id-123"), | CODE |
| LOW | tests/tracing/test_responses_tracing.py | 27 | self.id = "dummy-id" | CODE |
| LOW⚡ | …caibench/cyber_ranges/easy_techcorp2/database/init.sql | 36 | ('Acme Corporation', 'contact@acme.com', 'Acme Corp', '555-1000', '123 Business St, Tech City'), | CODE |
| LOW⚡ | …caibench/cyber_ranges/easy_techcorp2/database/init.sql | 36 | ('Acme Corporation', 'contact@acme.com', 'Acme Corp', '555-1000', '123 Business St, Tech City'), | CODE |
| LOW⚡ | …caibench/cyber_ranges/easy_techcorp2/database/init.sql | 37 | ('Global Industries', 'info@global.com', 'Global Inc', '555-2000', '456 Commerce Ave, Metro City'), | CODE |
| LOW⚡ | …caibench/cyber_ranges/easy_techcorp2/database/init.sql | 38 | ('Tech Solutions Ltd', 'hello@techsol.com', 'Tech Solutions', '555-3000', '789 Innovation Dr, Silicon Valley'), | CODE |
| LOW⚡ | …caibench/cyber_ranges/easy_techcorp2/database/init.sql | 39 | ('Enterprise Systems', 'sales@enterprise.com', 'Enterprise', '555-4000', '321 Corporate Blvd, Business Park'), | CODE |
| LOW⚡ | …caibench/cyber_ranges/easy_techcorp2/database/init.sql | 40 | ('Digital Dynamics', 'contact@digital.com', 'Digital Dynamics', '555-5000', '654 Tech Lane, Startup City'); | CODE |
| LOW | …ber_ranges/CobaltGroupRansomware/finance/entrypoint.sh | 6 | cp -r /dummy_data/* /data/ | CODE |
| LOW | src/cai/repl/ui/prompt.py | 103 | "placeholder": "#666666 italic", | CODE |
| LOW⚡ | src/cai/repl/commands/_virtualization_monolith.py | 1783 | # dummy_id = f"dummy-{image_name.replace('/', '-')}" | COMMENT |
| LOW⚡ | src/cai/repl/commands/_virtualization_monolith.py | 1784 | # os.environ["CAI_ACTIVE_CONTAINER"] = dummy_id | COMMENT |
| LOW⚡ | src/cai/repl/commands/_virtualization_monolith.py | 1787 | # f"[yellow]Set '{dummy_id}' as active environment.[/yellow]\n" | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/cai/sdk/agents/models/openai_chatcompletions.py | 1320 | suppress_empty=True, # Keep suppress_empty=True as requested | CODE |
| HIGH | src/cai/prompts/core/system_master_template.md | 12 | # 2. Compacted Summary (optional): AI-generated summary | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | src/cai/sdk/agents/voice/models/openai_tts.py | 42 | response = self._client.audio.speech.with_streaming_response.create( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/cai/cli_headless.py | 268 | CODE | |
| LOW | src/cai/tools/executor.py | 1289 | CODE | |
| LOW | src/cai/tools/executor.py | 1450 | CODE | |
| LOW | src/cai/tools/reconnaissance/exec_code.py | 206 | CODE | |
| LOW | src/cai/tools/reconnaissance/generic_linux_command.py | 864 | CODE | |
| LOW | src/cai/util/tokens.py | 163 | CODE | |
| LOW | src/cai/util/streaming.py | 1646 | CODE | |
| LOW | src/cai/util/streaming.py | 1726 | CODE | |
| LOW | src/cai/agents/codeagent.py | 201 | CODE | |
| LOW | src/cai/sdk/agents/tracing/create.py | 152 | CODE | |
| LOW | src/cai/sdk/agents/tracing/create.py | 317 | CODE | |
| LOW | src/cai/sdk/agents/tracing/create.py | 361 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/continue_mode.md | 143 | export ALIAS_API_KEY=your-api-key | STRING |
| HIGH | docs/environment_variables.md | 421 | C99_API_KEY="your-api-key" # For C99.nl subdomain discovery tool | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | examples/datasets/pentest-R1/findjsonl.sh | 4 | # Usage: | COMMENT |
| LOW | src/cai/tools/network/capture_traffic.py | 141 | # Example usage | COMMENT |
| LOW | src/cai/caibench/cli.py | 62 | # Example usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/cut_the_rope/benchmark/graph_sample.py | 3 | using simulated data. It then generates and saves a visual attack graph for demonstration purposes. | STRING |
| MEDIUM | …ch/artifacts/chals/forensics/Br3akTh3Vau1t/ansible.cfg | 266 | # and you can change the location of the files by setting retry_files_save_path | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/cai/tui/components/streaming_status_bar.py | 666 | CODE | |
| MEDIUM | src/cai/tui/components/streaming_status_bar.py | 689 | CODE |