SWE-agent takes a GitHub issue and tries to automatically fix it, using your LM of choice. It can also be employed for offensive cybersecurity or competitive coding challenges. [NeurIPS 2024]
This report presents the forensic synthetic code analysis of SWE-agent/SWE-agent, a Python project with 19,799 GitHub stars. SynthScan v2.0 examined 26,759 lines of code across 287 source files, recording 324 pattern matches distributed across 18 syntactic categories. The overall adjusted score of 17.2 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 324 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/web_browser/lib/web_browser_utils.py | 98 | def _print_response_with_metadata(response): | CODE |
| LOW | tools/web_browser/lib/web_browser_utils.py | 120 | def _autosave_screenshot_from_response(response, mode): | CODE |
| LOW | tests/test_run_batch.py | 49 | def test_empty_instances_simple(test_data_sources_path: Path, tmp_path: Path): | CODE |
| LOW | tests/test_run_batch.py | 69 | def test_empty_instances_expert(test_data_sources_path: Path, tmp_path: Path): | CODE |
| LOW | tests/test_run_batch.py | 93 | # def test_run_batch_swe_bench_instances(tmp_path: Path): | COMMENT |
| LOW | tests/test_parsing.py | 29 | def test_thought_action_parser(): | CODE |
| LOW | tests/test_parsing.py | 39 | def test_xml_thought_action_parser(): | CODE |
| LOW | tests/test_parsing.py | 83 | def test_function_calling_parser(): | CODE |
| LOW | tests/test_parsing.py | 128 | def test_function_calling_parser_error_message(): | CODE |
| LOW | tests/test_utils.py | 9 | def test_convert_path_to_abspath(): | CODE |
| LOW | tests/test_utils.py | 14 | def test_convert_paths_to_abspath(): | CODE |
| LOW | tests/conftest.py | 40 | def test_ctf_trajectories_path(test_data_path) -> Path: | CODE |
| LOW | tests/conftest.py | 123 | def swe_agent_test_repo_clone(tmp_path): | CODE |
| LOW | tests/test_batch_instance.py | 11 | def test_simple_batch_from_swe_bench_to_full_batch_instance(test_data_sources_path): | CODE |
| LOW | tests/test_batch_instance.py | 26 | def test_simple_batch_treats_repo_names_containing_github_as_existing_repos(repo_name): | CODE |
| LOW | tests/test_batch_instance.py | 38 | def test_simple_batch_treats_github_urls_as_github_repos(): | CODE |
| LOW | tests/test_batch_instance.py | 59 | def test_get_swe_bench_instances(): | CODE |
| LOW | tests/test_agent.py | 31 | def thought_action_agent_config(): | CODE |
| LOW | tests/test_agent.py | 41 | def function_calling_agent_config(): | CODE |
| LOW | tests/test_agent.py | 149 | def test_run_step_by_step_checking_history(dummy_env: SWEEnv, default_agent: DefaultAgent, tmp_path): | CODE |
| LOW | tests/test_agent.py | 211 | def test_show_no_output_template(dummy_env: SWEEnv, default_agent: DefaultAgent, tmp_path): | CODE |
| LOW | tests/test_agent.py | 224 | def test_successful_submission(dummy_env: SWEEnv, default_agent: DefaultAgent, tmp_path): | CODE |
| LOW | tests/test_swesmith.py | 25 | def test_with_mirror_and_token(self): | CODE |
| LOW | tests/test_swesmith.py | 38 | def test_with_mirror_no_token(self): | CODE |
| LOW | tests/test_swesmith.py | 116 | def test_other_http_error_raises(self, mock_urlopen): | CODE |
| LOW | tests/test_swesmith.py | 191 | def test_private_repo_no_token_raises(self, mock_private, tmp_path): | CODE |
| LOW | tests/test_run_hooks.py | 15 | def open_pr_hook_init_for_sop(): | CODE |
| LOW⚡ | tests/test_run_hooks.py | 33 | def test_should_open_pr_fail_submission(open_pr_hook_init_for_sop, agent_run_result): | CODE |
| LOW⚡ | tests/test_run_hooks.py | 39 | def test_should_open_pr_fail_exit(open_pr_hook_init_for_sop, agent_run_result): | CODE |
| LOW⚡ | tests/test_run_hooks.py | 45 | def test_should_open_pr_fail_invalid_url(open_pr_hook_init_for_sop, agent_run_result): | CODE |
| LOW⚡ | tests/test_run_hooks.py | 51 | def test_should_open_pr_fail_closed(open_pr_hook_init_for_sop, agent_run_result): | CODE |
| LOW⚡ | tests/test_run_hooks.py | 57 | def test_should_open_pr_fail_assigned(open_pr_hook_init_for_sop, agent_run_result): | CODE |
| LOW⚡ | tests/test_run_hooks.py | 63 | def test_should_open_pr_fail_locked(open_pr_hook_init_for_sop, agent_run_result): | CODE |
| LOW⚡ | tests/test_run_hooks.py | 69 | def test_should_open_pr_fail_has_pr(open_pr_hook_init_for_sop, agent_run_result): | CODE |
| LOW⚡ | tests/test_run_hooks.py | 75 | def test_should_open_pr_success_has_pr_override(open_pr_hook_init_for_sop, agent_run_result): | CODE |
| LOW⚡ | tests/test_run_hooks.py | 82 | def test_save_apply_patch_hook_concurrent_workers_save_to_correct_dirs(tmp_path): | CODE |
| LOW | tests/test_run.py | 6 | def test_run_cli_no_arg_error(): | CODE |
| LOW | tests/test_run.py | 30 | def test_run_cli_subcommand_help(): | CODE |
| LOW | tests/test_env.py | 21 | def test_init_swe_env_conservative_clone(test_env_args): | CODE |
| LOW⚡ | tests/test_env.py | 51 | def test_env_communicate_with_handling(test_env_args): | CODE |
| LOW⚡ | tests/test_env.py | 57 | def test_env_communicate_with_handling_timeout(test_env_args): | CODE |
| LOW⚡ | tests/test_env.py | 64 | def test_env_interrupt_session(test_env_args): | CODE |
| LOW | tests/test_run_single.py | 24 | def test_run_single_raises_exception(): | CODE |
| LOW | tests/test_run_single.py | 33 | def agent_config_with_commands(): | CODE |
| LOW | tests/test_run_single.py | 84 | def test_run_ies_repo_ps_matrix( | CODE |
| LOW | tests/utils.py | 7 | def make_python_tool_importable(file_path: str | Path, module_name: str | None = None) -> None: | CODE |
| LOW | tests/test_tools_command_parsing.py | 6 | def test_command_parsing_formats(): | CODE |
| LOW | tests/test_tools_command_parsing.py | 82 | def test_argument_name_patterns(): | CODE |
| LOW | tests/test_tools_command_parsing.py | 107 | def test_signature_argument_consistency(): | CODE |
| LOW | tests/test_tools_command_parsing.py | 131 | def test_function_calling_tool_generation(): | CODE |
| LOW | tests/test_tools_command_parsing.py | 176 | def test_custom_argument_format(): | CODE |
| LOW | tests/test_models.py | 41 | def test_user_agent_header_default(): | CODE |
| LOW | tests/test_models.py | 63 | def test_user_agent_header_preserves_existing(): | CODE |
| LOW | tests/test_models.py | 86 | def test_user_agent_header_with_other_extra_headers(): | CODE |
| LOW | tests/test_env_utils.py | 19 | def test_format_trajectory_markdown(test_trajectory): | CODE |
| LOW | tests/test_env_utils.py | 25 | def test_remove_triple_backticks(): | CODE |
| LOW | tests/test_env_utils.py | 46 | def test_parse_gh_repo_url_fails(): | CODE |
| LOW | tests/test_env_utils.py | 63 | def test_parse_gh_issue_url_fails(): | CODE |
| LOW | tests/test_env_utils.py | 75 | def test_get_associated_commit_urls(): | CODE |
| LOW⚡ | tests/test_quick_stats.py | 10 | def test_quick_stats_empty_directory(): | CODE |
| 59 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/windowed/lib/windowed_file.py | 210 | print(f"Error: Text not found: {search}") | CODE |
| MEDIUM | tools/windowed/lib/windowed_file.py | 244 | print(f"Error: Text not found: {search}") | CODE |
| LOW | tools/web_browser/lib/web_browser_utils.py | 61 | except Exception as e: | CODE |
| MEDIUM | tools/web_browser/lib/web_browser_utils.py | 58 | def wrapper(*args, **kwargs): | CODE |
| LOW⚡ | tools/web_browser/lib/browser_manager.py | 230 | except Exception: | CODE |
| LOW⚡ | tools/web_browser/lib/browser_manager.py | 240 | except Exception: | CODE |
| LOW⚡ | tools/web_browser/lib/browser_manager.py | 247 | except Exception: | CODE |
| LOW | docs/usage/memory_sentinel.py | 134 | except Exception as e: | CODE |
| MEDIUM⚡ | docs/usage/hello_world_output.txt | 334 | print(f"Error: {type(e).__name__}: {e}")' --new_str 'if __name__ == "__main__": | CODE |
| MEDIUM⚡ | docs/usage/hello_world_output.txt | 340 | print(f"Error: {type(e).__name__}: {e}") | CODE |
| MEDIUM⚡ | docs/usage/hello_world_output.txt | 347 | print(f"Error: {type(e).__name__}: {e}") | CODE |
| MEDIUM⚡ | docs/usage/hello_world_output.txt | 354 | print(f"Error: {type(e).__name__}: {e}")' | CODE |
| MEDIUM⚡ | docs/usage/hello_world_output.txt | 370 | 13 print(f"Error: {type(e).__name__}: {e}") | CODE |
| MEDIUM⚡ | docs/usage/hello_world_output.txt | 377 | 20 print(f"Error: {type(e).__name__}: {e}") | CODE |
| MEDIUM⚡ | docs/usage/hello_world_output.txt | 384 | 27 print(f"Error: {type(e).__name__}: {e}") | CODE |
| MEDIUM⚡ | docs/usage/hello_world_output.txt | 516 | + print(f"Error: {type(e).__name__}: {e}") | CODE |
| MEDIUM⚡ | docs/usage/hello_world_output.txt | 523 | + print(f"Error: {type(e).__name__}: {e}") | CODE |
| MEDIUM⚡ | docs/usage/hello_world_output.txt | 530 | + print(f"Error: {type(e).__name__}: {e}") | CODE |
| MEDIUM | docs/usage/hello_world_output.txt | 188 | print(f"Error: {type(e).__name__}: {e}")' | CODE |
| LOW⚡ | docs/usage/hello_world_output.txt | 333 | except Exception as e: | CODE |
| LOW⚡ | docs/usage/hello_world_output.txt | 339 | except Exception as e: | CODE |
| LOW⚡ | docs/usage/hello_world_output.txt | 346 | except Exception as e: | CODE |
| LOW⚡ | docs/usage/hello_world_output.txt | 353 | except Exception as e: | CODE |
| LOW | docs/usage/hello_world_output.txt | 187 | except Exception as e: | CODE |
| LOW | sweagent/__init__.py | 57 | except Exception: | CODE |
| LOW | sweagent/__init__.py | 67 | except Exception: | CODE |
| LOW | sweagent/tools/tools.py | 283 | except Exception: | CODE |
| LOW | sweagent/inspector/static.py | 43 | except Exception as e: | STRING |
| LOW | sweagent/inspector/static.py | 82 | except Exception: | CODE |
| MEDIUM | sweagent/inspector/static.py | 49 | def _load_file(file_name, gold_patches, test_patches): | CODE |
| LOW | sweagent/utils/config.py | 26 | except Exception: | CODE |
| LOW | sweagent/agent/models.py | 745 | except Exception as e: | CODE |
| LOW | sweagent/agent/agents.py | 345 | except Exception as e: | CODE |
| LOW | sweagent/agent/agents.py | 371 | except Exception as e: | CODE |
| LOW | sweagent/agent/agents.py | 860 | except Exception as e: | CODE |
| LOW | sweagent/agent/agents.py | 891 | except Exception as e: | CODE |
| LOW | sweagent/agent/agents.py | 978 | except Exception as f: | CODE |
| LOW | sweagent/agent/agents.py | 1053 | except Exception as e: | CODE |
| LOW | sweagent/agent/agents.py | 1205 | except Exception as e: | CODE |
| LOW | sweagent/agent/problem_statement.py | 208 | except Exception as e: | CODE |
| LOW | sweagent/agent/problem_statement.py | 272 | except Exception as e: | CODE |
| LOW | sweagent/agent/reviewer.py | 256 | except Exception as e: | CODE |
| LOW | sweagent/agent/reviewer.py | 303 | except Exception as e: | CODE |
| LOW | sweagent/agent/reviewer.py | 342 | except Exception as e: | CODE |
| LOW | sweagent/agent/reviewer.py | 362 | except Exception as e: | CODE |
| LOW | sweagent/agent/reviewer.py | 430 | except Exception as e: | CODE |
| LOW | sweagent/run/quick_stats.py | 46 | except Exception as e: | CODE |
| LOW | sweagent/run/remove_unfinished.py | 30 | except Exception as e: | CODE |
| LOW | sweagent/run/run_batch.py | 319 | except Exception as e: | CODE |
| LOW | sweagent/run/run_batch.py | 365 | except Exception: | CODE |
| LOW | sweagent/run/run_batch.py | 402 | except Exception as e: | CODE |
| MEDIUM | sweagent/run/run_batch.py | 189 | def _model_id(self) -> str: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/windowed/lib/windowed_file.py | 1 | CODE | |
| LOW | tools/windowed/lib/windowed_file.py | 2 | CODE | |
| LOW | tools/windowed/lib/windowed_file.py | 4 | CODE | |
| LOW | tools/registry/lib/registry.py | 4 | CODE | |
| LOW | tools/registry/lib/registry.py | 4 | CODE | |
| LOW | tools/registry/lib/registry.py | 4 | CODE | |
| LOW | tools/web_browser/lib/web_browser_utils.py | 1 | CODE | |
| LOW | tools/web_browser/lib/browser_manager.py | 1 | CODE | |
| LOW | tools/web_browser/lib/web_browser_config.py | 1 | CODE | |
| LOW | tools/web_browser/lib/web_browser_config.py | 4 | CODE | |
| LOW | tests/test_parsing.py | 1 | CODE | |
| LOW | tests/test_utils.py | 1 | CODE | |
| LOW | tests/conftest.py | 1 | CODE | |
| LOW | tests/test_packaging.py | 1 | CODE | |
| LOW | tests/test_swesmith.py | 1 | CODE | |
| LOW | tests/test_run.py | 1 | CODE | |
| LOW | tests/test_env.py | 1 | CODE | |
| LOW | tests/test_run_single.py | 1 | CODE | |
| LOW | tests/test_run_replay.py | 1 | CODE | |
| LOW | tests/test_models.py | 1 | CODE | |
| LOW | tests/test_env_utils.py | 1 | CODE | |
| LOW | tests/test_quick_stats.py | 1 | CODE | |
| LOW | tests/tools/test_split_string.py | 1 | CODE | |
| LOW | tests/test_commands/_interactive_dummy.py | 2 | CODE | |
| LOW | tests/test_data/data_sources/ctf/crypto/Katy/solver.py | 1 | CODE | |
| LOW | sweagent/__init__.py | 1 | CODE | |
| LOW | sweagent/types.py | 7 | CODE | |
| LOW | sweagent/tools/bundle.py | 1 | CODE | |
| LOW | sweagent/tools/commands.py | 19 | CODE | |
| LOW | sweagent/inspector/server.py | 1 | CODE | |
| LOW | sweagent/inspector/static.py | 1 | CODE | |
| LOW | sweagent/utils/config.py | 1 | CODE | |
| LOW | sweagent/utils/log.py | 1 | CODE | |
| LOW | sweagent/agent/history_processors.py | 1 | CODE | |
| LOW | sweagent/agent/models.py | 1 | CODE | |
| LOW | sweagent/agent/agents.py | 1 | CODE | |
| LOW | sweagent/agent/reviewer.py | 5 | CODE | |
| LOW | sweagent/agent/hooks/abstract.py | 7 | CODE | |
| LOW | sweagent/run/run_traj_to_demo.py | 6 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | sweagent/agent/problem_statement.py | 0 | convenience discriminator for (de)serialization/cli. do not change. | STRING |
| HIGH | sweagent/environment/repo.py | 0 | convenience discriminator for (de)serialization/cli. do not change. | STRING |
| HIGH | sweagent/run/batch_instances.py | 0 | convenience discriminator for (de)serialization/cli. do not change. | STRING |
| HIGH | sweagent/run/run_replay.py | 0 | path to a .env file to load environment variables from. | STRING |
| HIGH | sweagent/run/run_single.py | 0 | path to a .env file to load environment variables from. | STRING |
| HIGH | sweagent/run/run_batch.py | 0 | path to a .env file to load environment variables from. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …_from_url__t-0.00__p-0.95__c-3.00__install-1/args.yaml | 84 | \ return fi # Check if the file already exists if [ -e \"\ | CODE |
| LOW⚡ | …_from_url__t-0.00__p-0.95__c-3.00__install-1/args.yaml | 94 | code: 'submit() { cd $ROOT # Check if the patch file exists and is non-empty if | CODE |
| LOW⚡ | …_from_url__t-0.00__p-0.95__c-3.00__install-1/args.yaml | 144 | code: 'search_file() { # Check if the first argument is provided if [ | CODE |
| LOW⚡ | …_from_url__t-0.00__p-0.95__c-3.00__install-1/args.yaml | 153 | file is open fi local file="$CURRENT_FILE" # Set file to the | CODE |
| LOW⚡ | …_from_url__t-0.00__p-0.95__c-3.00__install-1/args.yaml | 156 | -nH -- "$search_term" "$file") # Check if no matches were found if [ | CODE |
| LOW | …_from_url__t-0.00__p-0.95__c-3.00__install-1/args.yaml | 226 | "$CURRENT_FILE")_backup" # Read the file line by line into an array mapfile | CODE |
| LOW⚡ | …__default__t-0.00__p-0.95__c-3.00__install-1/args.yaml | 85 | \ return fi # Check if the file already exists if [ -e \"\ | CODE |
| LOW⚡ | …__default__t-0.00__p-0.95__c-3.00__install-1/args.yaml | 95 | code: 'submit() { cd $ROOT # Check if the patch file exists and is non-empty if | CODE |
| LOW⚡ | …__default__t-0.00__p-0.95__c-3.00__install-1/args.yaml | 145 | code: 'search_file() { # Check if the first argument is provided if [ | CODE |
| LOW⚡ | …__default__t-0.00__p-0.95__c-3.00__install-1/args.yaml | 154 | file is open fi local file="$CURRENT_FILE" # Set file to the | CODE |
| LOW⚡ | …__default__t-0.00__p-0.95__c-3.00__install-1/args.yaml | 157 | -nH -- "$search_term" "$file") # Check if no matches were found if [ | CODE |
| LOW | …__default__t-0.00__p-0.95__c-3.00__install-1/args.yaml | 227 | "$CURRENT_FILE")_backup" # Read the file line by line into an array mapfile | CODE |
| LOW | sweagent/tools/parsing.py | 155 | # Check if it's not nested within another block | COMMENT |
| LOW | sweagent/tools/parsing.py | 293 | # Check if all required arguments are there | STRING |
| LOW | sweagent/tools/parsing.py | 300 | # Check if all arguments are valid | STRING |
| LOW | sweagent/tools/parsing.py | 490 | # Check if required keys are present | COMMENT |
| LOW | sweagent/tools/parsing.py | 503 | # Check if required keys are present in 'command' object | COMMENT |
| LOW | sweagent/run/run_batch.py | 383 | # Check if there's an existing trajectory for this instance | COMMENT |
| LOW | sweagent/run/hooks/open_pr.py | 231 | # Check if adding this step would exceed the character limit | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | config/bash_only.yaml | 130 | ### Create a new file: | COMMENT |
| MEDIUM⚡ | tests/test_quick_stats.py | 19 | # Create a sample .traj file with required structure | COMMENT |
| MEDIUM⚡ | tests/test_quick_stats.py | 24 | # Create a minimal valid .traj file | COMMENT |
| MEDIUM⚡ | …_from_url__t-0.00__p-0.95__c-3.00__install-1/args.yaml | 86 | \ return fi # Create the file an empty new line printf \"\\\ | CODE |
| MEDIUM⚡ | …__default__t-0.00__p-0.95__c-3.00__install-1/args.yaml | 87 | \ return fi # Create the file an empty new line printf \"\\\ | CODE |
| MEDIUM | sweagent/environment/swe_env.py | 62 | """This class represents the environment in which we solve the tasks. | STRING |
| MEDIUM | sweagent/run/rich_test.py | 39 | # Create a spinner for this task | COMMENT |
| MEDIUM | sweagent/run/common.py | 196 | """This class implements a basic CLI for SWE-agent. It is based on pydantic-settings, i.e., takes | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/web_browser/lib/browser_manager.py | 216 | CODE | |
| LOW | docs/usage/memory_sentinel.py | 95 | CODE | |
| LOW | sweagent/tools/parsing.py | 469 | CODE | |
| LOW | sweagent/tools/utils.py | 8 | CODE | |
| LOW | sweagent/tools/utils.py | 46 | CODE | |
| LOW | sweagent/inspector/server.py | 295 | CODE | |
| LOW | sweagent/inspector/server.py | 254 | CODE | |
| LOW | sweagent/inspector/static.py | 49 | CODE | |
| LOW | sweagent/inspector/static.py | 96 | CODE | |
| LOW | sweagent/utils/log.py | 57 | CODE | |
| LOW | sweagent/utils/log.py | 93 | CODE | |
| LOW | sweagent/utils/log.py | 160 | CODE | |
| LOW | sweagent/agent/history_processors.py | 320 | CODE | |
| LOW | sweagent/agent/models.py | 328 | CODE | |
| LOW | sweagent/agent/models.py | 875 | CODE | |
| LOW | sweagent/agent/models.py | 384 | CODE | |
| LOW | sweagent/agent/models.py | 840 | CODE | |
| LOW | sweagent/agent/problem_statement.py | 294 | CODE | |
| LOW | sweagent/agent/reviewer.py | 40 | CODE | |
| LOW | sweagent/run/run.py | 70 | CODE | |
| LOW | sweagent/run/compare_runs.py | 69 | CODE | |
| LOW | sweagent/run/run_batch.py | 268 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | sweagent/tools/tools.py | 250 | # -------------------- | COMMENT |
| MEDIUM | sweagent/tools/tools.py | 315 | # ------------- | COMMENT |
| MEDIUM | sweagent/tools/tools.py | 370 | # ----------------------------- | COMMENT |
| MEDIUM | sweagent/agent/history_processors.py | 20 | # ----------------- | COMMENT |
| MEDIUM | sweagent/agent/history_processors.py | 71 | # ------------------ | COMMENT |
| MEDIUM | sweagent/agent/agents.py | 522 | # ---------- | COMMENT |
| MEDIUM | sweagent/agent/reviewer.py | 579 | # ---------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | docs/usage/hello_world_output.txt | 324 | ## Step 5: Think about edge cases and make sure the fix handles them | COMMENT |
| LOW | docs/usage/hello_world_output.txt | 85 | ## Step 1: Find and read code relevant to the PR description | COMMENT |
| LOW | docs/usage/hello_world_output.txt | 172 | ## Step 2: Create a script to reproduce the error | COMMENT |
| LOW | docs/usage/hello_world_output.txt | 232 | ## Step 3: Edit the source code to resolve the issue | COMMENT |
| LOW | docs/usage/hello_world_output.txt | 295 | ## Step 4: Rerun the script to confirm the fix | COMMENT |
| LOW | docs/usage/hello_world_output.txt | 76 | outlined.\n\n## Step 1: Find and read code relevant to the PR description\n\nFirst, let's explore the reposi | CODE |
| LOW | docs/usage/hello_world_output.txt | 159 | Python, function definitions need to end with a colon before the function body. The error message in the PR | CODE |
| LOW | docs/usage/hello_world_output.txt | 221 | definition.\n\n## Step 3: Edit the source code to resolve the issue\n\nNow, let's fix both instances of the | CODE |
| LOW | docs/usage/hello_world_output.txt | 288 | choices=[Choices(finish_reason='tool_calls', index=0, message=Message(content="## Step 4: Rerun the script t | CODE |
| LOW | docs/usage/hello_world_output.txt | 309 | zero. This confirms that our fix for the syntax error is working correctly.\n\n## Step 5: Think about edge c | CODE |
| LOW | docs/usage/adding_custom_tools.md | 27 | ## Step 1: Write the Command Script | COMMENT |
| LOW | docs/usage/adding_custom_tools.md | 59 | ## Step 2: Define the Tool Configuration | COMMENT |
| LOW | docs/usage/adding_custom_tools.md | 97 | ## Step 3: Tell the agent to use the new tool | COMMENT |
| LOW | docs/usage/adding_custom_tools.md | 119 | ## Step 4: Let's test it | COMMENT |
| LOW | sweagent/run/batch_instances.py | 276 | # IMPORTANT: Do not call this `path`, because then if people do not specify instance.type, | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | config/default_backticks.yaml | 2 | # This template is heavily inspired by anthropic's computer use demo, but you can use | COMMENT |
| MEDIUM | config/default.yaml | 2 | # This template is heavily inspired by anthropic's computer use demo, but you can use | COMMENT |
| MEDIUM | config/demo/no_instructions.yaml | 2 | # This template is heavily inspired by anthropic's computer use demo, but you can use | COMMENT |
| MEDIUM | config/demo/only_bash.yaml | 2 | # This template is heavily inspired by anthropic's computer use demo, but you can use | COMMENT |
| MEDIUM | config/demo/default.yaml | 2 | # This template is heavily inspired by anthropic's computer use demo, but you can use | COMMENT |
| MEDIUM | config/benchmarks/anthropic_filemap_multilingual.yaml | 1 | # This template is heavily inspired by anthropic, but you can use it with any LM. It is almost | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/windowed/lib/windowed_file.py | 177 | def set_window_text(self, new_text: str, *, line_range: Optional[Tuple[int, int]] = None) -> None: | CODE |
| LOW | sweagent/__init__.py | 108 | __all__ = [ | CODE |
| LOW | sweagent/inspector/static.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | sweagent/utils/log.py | 160 | def set_stream_handler_levels(level: int) -> None: | CODE |
| LOW | sweagent/agent/history_processors.py | 38 | def _set_content_text(entry: HistoryItem, text: str) -> None: | CODE |
| LOW | sweagent/agent/history_processors.py | 53 | def _set_cache_control(entry: HistoryItem) -> None: | CODE |
| LOW | sweagent/agent/models.py | 632 | def _update_stats(self, *, input_tokens: int, output_tokens: int, cost: float) -> None: | CODE |
| LOW | sweagent/environment/swe_env.py | 256 | def set_env_variables(self, env_variables: dict[str, str]) -> None: | CODE |
| LOW | sweagent/run/run_single.py | 99 | def set_default_output_dir(self) -> None: | CODE |
| LOW | sweagent/run/run_batch.py | 103 | def set_default_output_dir(self) -> None: | CODE |
| LOW | sweagent/run/inspector_cli.py | 115 | def update_content(self) -> None: | CODE |
| LOW | sweagent/run/_progress.py | 103 | def _update_total_costs(self) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | tests/test_data/data_sources/debug_20240322.json | 1 | [{"repo": "scikit-learn/scikit-learn", "instance_id": "scikit-learn__scikit-learn-11574", "base_commit": "dd69361a0d9c6c | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_swesmith.py | 87 | assert _is_repo_private("org/repo", "fake-token") is False | CODE |
| LOW | tests/test_swesmith.py | 99 | assert _is_repo_private("org/repo", "fake-token") is True | CODE |
| LOW | tests/test_swesmith.py | 113 | assert _is_repo_private("org/repo", "fake-token") is True | CODE |
| LOW | tests/test_swesmith.py | 128 | _is_repo_private("org/repo", "fake-token") | CODE |
| LOW | tests/test_models.py | 19 | api_key=SecretStr("dummy_key"), | CODE |
| LOW | tests/test_models.py | 46 | api_key=SecretStr("dummy_key"), | CODE |
| LOW | tests/test_models.py | 70 | api_key=SecretStr("dummy_key"), | CODE |
| LOW | tests/test_models.py | 92 | api_key=SecretStr("dummy_key"), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mkdocs.yml | 161 | - assets/mkdocstrings.css | COMMENT |
| LOW | mkdocs.yml | 181 | # note: >- | COMMENT |
| LOW | tests/test_run_batch.py | 101 | # "test", | COMMENT |
| LOW | tests/tools/test_default_utils.py | 101 | # cmd = f"{sys.executable} {DEFAULT_TOOLS_BIN}/goto 50" | COMMENT |
| LOW | …test_data/data_sources/ctf/misc/networking_1/README.md | 1 | # Networking 1 | COMMENT |
| LOW | .devcontainer/sample_keys.cfg | 1 | # All keys are commented out by default. Make sure to remove the leading '#' of the relevant lines | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/installation/keys.md | 29 | See the following links for tutorials on obtaining [Anthropic](https://docs.anthropic.com/en/api/getting-started), [Open | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | sweagent/agent/agents.py | 856 | submission_command = "git add -A && git diff --cached > /root/model.patch" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | sweagent/agent/problem_statement.py | 219 | Download an image from URL and convert it to base64 markdown format. Args: url: The URL of the imag | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/usage/memory_sentinel.py | 13 | Script was generated by Claude 3.7 with the following prompt: | STRING |