gpt-oss-120b and gpt-oss-20b are two open-weight language models by OpenAI
This report summarizes scanner evidence for openai/gpt-oss, a Python project with 20,458 GitHub stars. SynthScan examined 25,090 lines of code across 122 source files, recording 158 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 7.7 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 89 finding(s).
Are imports declared and package/API names verified? 31 finding(s).
Are wrappers, guards, and repeated structures necessary? 78 finding(s).
Which changes need focused human review? 158 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 158 distinct pattern matches across 13 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. 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 configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| 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 | 32 | def test_youcom_backend_api_key_param(): | CODE |
| LOW | tests/gpt_oss/tools/simple_browser/test_backend.py | 39 | async def test_youcom_backend_search(mock_session_get): | CODE |
| LOW | tests/gpt_oss/tools/simple_browser/test_backend.py | 62 | 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 |
|---|---|---|---|---|
| HIGH | gpt_oss/chat.py | 368 | except FileNotFoundError: | CODE |
| HIGH | gpt_oss/tools/simple_browser/simple_browser_tool.py | 202 | except json.JSONDecodeError: | CODE |
| HIGH | gpt_oss/responses_api/api_server.py | 552 | except Exception: | CODE |
| HIGH | gpt_oss/responses_api/api_server.py | 842 | except RuntimeError: | CODE |
| HIGH | examples/streamlit/streamlit_chat.py | 246 | except Exception: | CODE |
| HIGH | examples/streamlit/streamlit_chat.py | 261 | except Exception: | CODE |
| HIGH | examples/gradio/gradio_chat.py | 63 | except json.JSONDecodeError: | 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 |