gpt-oss-120b and gpt-oss-20b are two open-weight language models by OpenAI
This report presents the forensic synthetic code analysis of openai/gpt-oss, a Python project with 20,221 GitHub stars. SynthScan v2.0 examined 25,079 lines of code across 122 source files, recording 150 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 6.3 places this repository in the Low 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 150 distinct pattern matches across 12 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 | gpt_oss/evals/gpqa_eval.py | 28 | def format_multichoice_question(row): | STRING |
| LOW | gpt_oss/evals/healthbench_eval.py | 213 | def _aggregate_get_clipped_mean( | CODE |
| LOW | gpt_oss/evals/healthbench_eval.py | 535 | def physician_completions_main( | CODE |
| LOW | gpt_oss/tools/tool.py | 13 | def _maybe_update_inplace_and_validate_channel( | CODE |
| LOW | gpt_oss/tools/tool.py | 46 | def output_channel_should_match_input_channel(self) -> bool: | CODE |
| LOW | gpt_oss/tools/python_docker/docker_tool.py | 82 | def call_python_script_with_uv(script: str) -> str: | CODE |
| LOW | gpt_oss/tools/simple_browser/simple_browser_tool.py | 60 | def function_the_model_can_call( | CODE |
| LOW | gpt_oss/tools/simple_browser/simple_browser_tool.py | 78 | def _tiktoken_vocabulary_lengths(enc_name: str) -> list[int]: | CODE |
| LOW | gpt_oss/tools/simple_browser/page_contents.py | 93 | def _tiktoken_vocabulary_lengths(enc_name: str) -> list[int]: | CODE |
| LOW | gpt_oss/triton/model.py | 39 | def _compute_concentration_and_inv_freq(self) -> torch.Tensor: | CODE |
| LOW | gpt_oss/torch/model.py | 85 | def _compute_concentration_and_inv_freq(self) -> torch.Tensor: | CODE |
| LOW | gpt_oss/responses_api/api_server.py | 452 | def _resolve_browser_recipient( | CODE |
| LOW | gpt_oss/responses_api/api_server.py | 478 | def _ensure_reasoning_item_id(self) -> str: | CODE |
| LOW⚡ | tests/test_api_endpoints.py | 10 | def test_basic_response_creation(self, api_client, sample_request_data): | CODE |
| LOW⚡ | tests/test_api_endpoints.py | 18 | def test_response_with_high_reasoning(self, api_client, sample_request_data): | CODE |
| LOW⚡ | tests/test_api_endpoints.py | 26 | def test_response_with_medium_reasoning(self, api_client, sample_request_data): | CODE |
| LOW⚡ | tests/test_api_endpoints.py | 34 | def test_response_with_invalid_model(self, api_client, sample_request_data): | CODE |
| LOW⚡ | tests/test_api_endpoints.py | 40 | def test_response_with_empty_input(self, api_client, sample_request_data): | CODE |
| LOW | tests/test_api_endpoints.py | 54 | def test_response_with_custom_temperature(self, api_client, sample_request_data): | CODE |
| LOW | tests/test_api_endpoints.py | 77 | def test_response_with_session_id(self, api_client, sample_request_data): | CODE |
| LOW | tests/test_api_endpoints.py | 95 | def test_response_continuation(self, api_client, sample_request_data): | CODE |
| LOW | tests/test_api_endpoints.py | 114 | def test_missing_required_fields(self, api_client): | CODE |
| LOW | tests/test_api_endpoints.py | 119 | def test_invalid_reasoning_effort(self, api_client, sample_request_data): | CODE |
| LOW | tests/test_api_endpoints.py | 133 | def test_extremely_long_input(self, api_client, sample_request_data): | CODE |
| LOW | tests/test_api_endpoints.py | 151 | def test_function_tool_integration(self, api_client, sample_request_data): | CODE |
| LOW | tests/test_api_endpoints.py | 181 | def test_response_time_under_threshold(self, api_client, sample_request_data, performance_timer): | CODE |
| LOW | tests/test_api_endpoints.py | 190 | def test_multiple_sequential_requests(self, api_client, sample_request_data): | CODE |
| LOW | tests/test_api_endpoints.py | 201 | def test_usage_object_structure(self, api_client, sample_request_data): | CODE |
| LOW | tests/test_api_endpoints.py | 219 | def test_usage_increases_with_longer_input(self, api_client, sample_request_data): | CODE |
| LOW | tests/gpt_oss/tools/simple_browser/test_backend.py | 34 | async def test_youcom_backend_search(mock_session_get): | CODE |
| LOW | tests/gpt_oss/tools/simple_browser/test_backend.py | 57 | async def test_youcom_backend_fetch(mock_session_get): | CODE |
| LOW | _build/gpt_oss_build_backend/backend.py | 73 | def prepare_metadata_for_build_wheel( | CODE |
| LOW | _build/gpt_oss_build_backend/backend.py | 100 | def get_requires_for_build_wheel( | CODE |
| LOW | _build/gpt_oss_build_backend/backend.py | 115 | def get_requires_for_build_sdist( | CODE |
| LOW | _build/gpt_oss_build_backend/backend.py | 126 | def get_requires_for_build_editable( | CODE |
| LOW | gpt-oss-mcp-server/build-system-prompt.py | 55 | def post_process_tools_description( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | gpt_oss/chat.py | 205 | except Exception as e: | CODE |
| LOW | gpt_oss/chat.py | 211 | except Exception as e: | CODE |
| LOW | gpt_oss/evals/responses_sampler.py | 77 | except Exception as e: | CODE |
| LOW | gpt_oss/evals/chat_completions_sampler.py | 85 | except Exception as e: | CODE |
| LOW | gpt_oss/evals/__main__.py | 197 | except Exception as e: | CODE |
| LOW | gpt_oss/tools/simple_browser/simple_browser_tool.py | 84 | except Exception as e: | CODE |
| LOW | gpt_oss/tools/simple_browser/simple_browser_tool.py | 441 | except Exception as e: | CODE |
| LOW | gpt_oss/tools/simple_browser/simple_browser_tool.py | 472 | except Exception as e: | CODE |
| LOW | gpt_oss/tools/simple_browser/simple_browser_tool.py | 653 | except Exception: | CODE |
| MEDIUM | gpt_oss/tools/simple_browser/simple_browser_tool.py | 650 | def extract_domain(url): | CODE |
| LOW | gpt_oss/tools/simple_browser/backend.py | 40 | except Exception: | CODE |
| LOW | gpt_oss/tools/simple_browser/page_contents.py | 149 | except Exception: | CODE |
| LOW | gpt_oss/responses_api/api_server.py | 113 | except Exception as body_exc: | CODE |
| LOW | gpt_oss/responses_api/api_server.py | 145 | except Exception as e: | CODE |
| MEDIUM | gpt_oss/responses_api/api_server.py | 146 | print(f"Error parsing tokens: {e}") | CODE |
| LOW | gpt_oss/responses_api/api_server.py | 229 | except Exception as e: | CODE |
| MEDIUM | gpt_oss/responses_api/api_server.py | 230 | print(f"Error processing browser tool arguments: {e}") | CODE |
| LOW⚡ | gpt_oss/responses_api/api_server.py | 351 | except Exception: | CODE |
| LOW⚡ | gpt_oss/responses_api/api_server.py | 355 | except Exception: | CODE |
| LOW⚡ | gpt_oss/responses_api/api_server.py | 359 | except Exception: | CODE |
| LOW | gpt_oss/responses_api/api_server.py | 552 | except Exception: | CODE |
| LOW | gpt_oss/responses_api/inference/ollama.py | 111 | except Exception as e: | CODE |
| LOW | examples/streamlit/streamlit_chat.py | 148 | except Exception: | STRING |
| LOW | examples/streamlit/streamlit_chat.py | 246 | except Exception: | STRING |
| LOW | examples/streamlit/streamlit_chat.py | 261 | except Exception: | STRING |
| LOW | examples/gradio/gradio_chat.py | 104 | except Exception: | STRING |
| LOW | examples/gradio/gradio_chat.py | 173 | except Exception as e: | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | gpt_oss/evals/types.py | 2 | CODE | |
| LOW | gpt_oss/evals/types.py | 2 | CODE | |
| LOW | gpt_oss/tools/apply_patch.py | 10 | CODE | |
| LOW | gpt_oss/tools/simple_browser/simple_browser_tool.py | 8 | CODE | |
| LOW | gpt_oss/tools/simple_browser/backend.py | 5 | CODE | |
| LOW | gpt_oss/tools/simple_browser/backend.py | 6 | CODE | |
| LOW | gpt_oss/tools/simple_browser/backend.py | 12 | CODE | |
| LOW | gpt_oss/tools/simple_browser/backend.py | 15 | CODE | |
| LOW | gpt_oss/tools/simple_browser/backend.py | 25 | CODE | |
| LOW | gpt_oss/tools/simple_browser/backend.py | 25 | CODE | |
| LOW | gpt_oss/tools/simple_browser/backend.py | 25 | CODE | |
| LOW | gpt_oss/tools/simple_browser/__init__.py | 1 | CODE | |
| LOW | gpt_oss/tools/simple_browser/__init__.py | 2 | CODE | |
| LOW | gpt_oss/tools/simple_browser/__init__.py | 2 | CODE | |
| LOW | gpt_oss/tools/simple_browser/page_contents.py | 5 | CODE | |
| LOW | gpt_oss/metal/scripts/create-local-model.py | 6 | CODE | |
| LOW | gpt_oss/triton/moe.py | 12 | CODE | |
| LOW | gpt_oss/responses_api/inference/triton.py | 1 | CODE | |
| LOW | gpt_oss/responses_api/inference/triton.py | 7 | CODE | |
| LOW | gpt_oss/responses_api/inference/triton.py | 9 | CODE | |
| LOW | gpt_oss/responses_api/inference/vllm.py | 7 | CODE | |
| LOW | tests/conftest.py | 4 | CODE | |
| LOW | tests/conftest.py | 5 | CODE | |
| LOW | tests/test_api_endpoints.py | 1 | CODE | |
| LOW | tests/test_api_endpoints.py | 3 | CODE | |
| LOW | tests/test_api_endpoints.py | 5 | CODE | |
| LOW | tests/test_api_endpoints.py | 5 | CODE | |
| LOW | tests/test_api_endpoints.py | 5 | CODE | |
| LOW | tests/gpt_oss/tools/simple_browser/test_backend.py | 2 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | gpt_oss/chat.py | 61 | CODE | |
| LOW | gpt_oss/evals/responses_sampler.py | 37 | CODE | |
| LOW | gpt_oss/evals/aime_eval.py | 20 | CODE | |
| LOW | gpt_oss/evals/report.py | 27 | CODE | |
| LOW | gpt_oss/evals/healthbench_eval.py | 247 | CODE | |
| LOW | gpt_oss/tools/apply_patch.py | 280 | CODE | |
| LOW | gpt_oss/tools/apply_patch.py | 389 | CODE | |
| LOW | gpt_oss/tools/apply_patch.py | 459 | CODE | |
| LOW | gpt_oss/tools/apply_patch.py | 177 | CODE | |
| LOW | gpt_oss/tools/python_docker/docker_tool.py | 144 | CODE | |
| LOW | gpt_oss/tools/python_docker/docker_tool.py | 337 | CODE | |
| LOW | gpt_oss/metal/examples/chat.py | 38 | CODE | |
| LOW | gpt_oss/triton/model.py | 422 | CODE | |
| LOW | gpt_oss/vllm/token_generator.py | 13 | CODE | |
| LOW | gpt_oss/responses_api/api_server.py | 100 | CODE | |
| LOW | gpt_oss/responses_api/api_server.py | 118 | CODE | |
| LOW | gpt_oss/responses_api/api_server.py | 1136 | CODE | |
| LOW | gpt_oss/responses_api/api_server.py | 493 | CODE | |
| LOW | gpt_oss/responses_api/inference/ollama.py | 60 | CODE | |
| LOW | gpt_oss/responses_api/inference/ollama.py | 64 | CODE | |
| LOW | gpt_oss/responses_api/inference/ollama.py | 119 | CODE | |
| LOW | gpt_oss/responses_api/inference/ollama.py | 67 | CODE | |
| LOW | tests/test_api_endpoints.py | 62 | CODE | |
| LOW | examples/streamlit/streamlit_chat.py | 105 | CODE | |
| LOW | examples/gradio/gradio_chat.py | 18 | CODE | |
| LOW | examples/agents-sdk-python/example.py | 24 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | gpt_oss/metal/include/gpt-oss.h | 1 | #pragma once | COMMENT |
| LOW | gpt_oss/metal/include/gpt-oss/macros.h | 1 | #pragma once | COMMENT |
| LOW | gpt_oss/metal/source/generate.c | 1 | #include <assert.h> | COMMENT |
| LOW | gpt_oss/metal/source/model.c | 1 | #include <assert.h> | COMMENT |
| LOW | gpt_oss/metal/source/context.c | 1 | #include <assert.h> | COMMENT |
| LOW | gpt_oss/metal/source/tokenizer.c | 1 | #include <assert.h> | COMMENT |
| LOW | gpt_oss/metal/source/include/internal/macros.h | 1 | #pragma once | COMMENT |
| LOW | gpt_oss/metal/source/include/internal/macros.h | 21 | #else | COMMENT |
| LOW | gpt_oss/metal/source/include/internal/macros.h | 41 | #define GPTOSS_LIKELY(condition) (!!(condition)) | COMMENT |
| LOW | gpt_oss/metal/source/include/internal/macros.h | 61 | #if defined(__GNUC__) && (__GNUC__ >= 9) && !defined(__INTEL_COMPILER) | COMMENT |
| LOW | gpt_oss/metal/source/include/internal/macros.h | 81 | #define GPTOSS_ALIGN(alignment) __declspec(align(alignment)) | COMMENT |
| LOW | gpt_oss/metal/source/include/internal/macros.h | 101 | #define GPTOSS_INTERNAL_SYMBOL __attribute__((__visibility__("internal"))) | COMMENT |
| LOW | gpt_oss/metal/source/include/internal/model.h | 1 | #pragma once | COMMENT |
| LOW | gpt_oss/metal/source/include/internal/kernel-args.h | 1 | #pragma once | COMMENT |
| LOW | gpt_oss/metal/source/include/internal/kernel-args.h | 21 | #define MLP_GATE_Bn 16 | COMMENT |
| LOW | gpt_oss/metal/source/include/internal/metal-kernels.h | 1 | #pragma once | COMMENT |
| LOW | gpt_oss/responses_api/utils.py | 81 | # fake_tokens = [200005, 35644, 200008, 976, 1825, 31064, 25, 392, 25216, 29400, 290, 11122, 306, 52768, 2117, 16842, 14 | COMMENT |
| LOW | gpt_oss/responses_api/utils.py | 101 | # 32455, | COMMENT |
| LOW | gpt_oss/responses_api/inference/stub.py | 81 | ] | COMMENT |
| LOW | gpt_oss/responses_api/inference/stub.py | 101 | # 316, | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | gpt_oss/generate.py | 2 | # Note: This script is for demonstration purposes only. It is not designed for production use. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | gpt_oss/tools/simple_browser/simple_browser_tool.py | 110 | CODE | |
| LOW | gpt_oss/triton/attention.py | 203 | CODE | |
| LOW | gpt_oss/responses_api/api_server.py | 118 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | gpt_oss/tools/simple_browser/backend.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpt_oss/tools/simple_browser/__init__.py | 4 | __all__ = [ | CODE |
| LOW | gpt_oss/tools/simple_browser/page_contents.py | 22 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | gpt_oss/metal/CMakeLists.txt | 191 | # ------------------------------------------------------------------------ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | README.md | 14 | Welcome to the gpt-oss series, [OpenAI's open-weight models](https://openai.com/open-models/) designed for powerful reas | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | compatibility-test/tools.ts | 149 | '{"rows":[{"id":1,"email":"user@example.com"},{"id":2,"email":"foo@bar.com"}],"row_count":2}', | CODE |
| LOW | compatibility-test/tools.ts | 149 | '{"rows":[{"id":1,"email":"user@example.com"},{"id":2,"email":"foo@bar.com"}],"row_count":2}', | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | examples/gradio/gradio_chat.py | 179 | # Create the Gradio interface | STRING |