OpenAI's Codex Security CLI and TypeScript SDK for finding, validating, and fixing security vulnerabilities. npm: https://www.npmjs.com/package/@openai/codex-security
This report summarizes scanner evidence for openai/codex-security, a TypeScript project with 11,058 GitHub stars. SynthScan examined 337,278 lines of code across 778 source files, recording 1888 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 5.4 (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? 1730 finding(s).
Are imports declared and package/API names verified? 131 finding(s).
Are wrappers, guards, and repeated structures necessary? 1680 finding(s).
Which changes need focused human review? 1888 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 1888 distinct pattern matches across 14 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 | plugins/codex-security/mcp-app/artifact-writer-main.ts | 14 | export async function createCodexSecurityArtifactWriterServer( | CODE |
| LOW | plugins/codex-security/mcp-app/server.ts | 525 | export function createCodexSecurityServer(): McpServer { | CODE |
| LOW | plugins/codex-security/mcp-app/server.ts | 1902 | async function startHeadlessStandardScan( | CODE |
| LOW | plugins/codex-security/mcp-app/server.ts | 2020 | function buildUserInputElicitation( | CODE |
| LOW | plugins/codex-security/mcp-app/server.ts | 2339 | function codexModelSettingsFromExtra(extra: unknown): { | CODE |
| LOW | plugins/codex-security/mcp-app/server.ts | 2391 | function deepScanInvocationFailureMessage(error: unknown): string { | CODE |
| LOW | …rity/mcp-app/tests/test_deep_scan_store_integration.ts | 47 | async function testCoordinatorCommitResponseRecovery( | CODE |
| LOW | …rity/mcp-app/tests/test_deep_scan_store_integration.ts | 217 | async function testFreeformFailureMessagesAgainstRealWorkbench() { | CODE |
| LOW | …rity/mcp-app/tests/test_deep_scan_store_integration.ts | 250 | async function testRecoveredPublicationRejectsLateFailure() { | CODE |
| LOW | …rity/mcp-app/tests/test_deep_scan_store_integration.ts | 314 | async function testNoopStoppedRefreshRetainsPublicationFailure() { | CODE |
| LOW | …rity/mcp-app/tests/test_deep_scan_store_integration.ts | 375 | async function testConcurrentParentDraftsPreserveBothCheckpoints() { | CODE |
| LOW | …rity/mcp-app/tests/test_deep_scan_store_integration.ts | 441 | async function testLateParentDraftPreservesCheckpointWithoutOverwritingTerminalSeal() { | CODE |
| LOW | …rity/mcp-app/tests/test_deep_scan_store_integration.ts | 509 | async function testReducerCommitAndFinishAgainstRealWorkbench( | CODE |
| LOW | …rity/mcp-app/tests/test_deep_scan_store_integration.ts | 787 | async function testExpiredDeadlineWithoutCompletedDiscoveryAgainstRealWorkbench() { | CODE |
| LOW | …ex-security/mcp-app/tests/deep_scan_lifecycle_cases.ts | 54 | async function canceledPublicationWaitsForHeartbeat() { | CODE |
| LOW | …ex-security/mcp-app/tests/deep_scan_lifecycle_cases.ts | 87 | async function delayedReducerDoesNotReplaceStoppedState() { | CODE |
| LOW | …ex-security/mcp-app/tests/deep_scan_lifecycle_cases.ts | 119 | async function replacementWaitsForTerminalResult() { | CODE |
| LOW | …ex-security/mcp-app/tests/deep_scan_lifecycle_cases.ts | 156 | async function concurrentOwnershipReadsKeepReplacementResult() { | CODE |
| LOW | …ex-security/mcp-app/tests/deep_scan_lifecycle_cases.ts | 248 | async function lateFailurePersistenceKeepsStoppedState() { | CODE |
| LOW | …ex-security/mcp-app/tests/deep_scan_lifecycle_cases.ts | 313 | async function shutdownStopsReplacementObservation() { | CODE |
| LOW | …ex-security/mcp-app/tests/deep_scan_lifecycle_cases.ts | 340 | async function failedCancellationStillPreservesResults() { | CODE |
| LOW | …ex-security/mcp-app/tests/deep_scan_lifecycle_cases.ts | 390 | async function lateCancellationKeepsPersistedFailure() { | CODE |
| LOW | …ex-security/mcp-app/tests/deep_scan_lifecycle_cases.ts | 425 | async function terminalDiscoveryWaitsForCleanup() { | CODE |
| LOW | …ex-security/mcp-app/tests/deep_scan_lifecycle_cases.ts | 487 | async function orphanWorkerDirectoriesAreNotReused() { | CODE |
| LOW | …ex-security/mcp-app/tests/deep_scan_lifecycle_cases.ts | 530 | async function ancestorNamesDoNotChooseWorkerSequence() { | CODE |
| LOW | …s/codex-security/mcp-app/tests/test_deep_scan_store.ts | 34 | async function testBeginProtocolAndParsing() { | CODE |
| LOW | …s/codex-security/mcp-app/tests/test_deep_scan_store.ts | 99 | async function testWriteSerializationAndRecovery() { | CODE |
| LOW | …s/codex-security/mcp-app/tests/test_deep_scan_store.ts | 149 | async function testBeginUsesTheWriteQueue() { | CODE |
| LOW | …s/codex-security/mcp-app/tests/test_deep_scan_store.ts | 179 | async function testHeartbeatBypassesBlockedWriteQueue() { | CODE |
| LOW | …s/codex-security/mcp-app/tests/test_deep_scan_store.ts | 233 | async function testOwnershipReadClearsStaleLease() { | CODE |
| LOW | …s/codex-security/mcp-app/tests/test_deep_scan_store.ts | 302 | async function testWorkerResponseParsing() { | CODE |
| LOW | …s/codex-security/mcp-app/tests/test_deep_scan_store.ts | 343 | async function testReplaceableDiscoveryFailureProtocol() { | CODE |
| LOW | …s/codex-security/mcp-app/tests/test_deep_scan_store.ts | 388 | async function testCanonicalCommitProtocol() { | CODE |
| LOW | …s/codex-security/mcp-app/tests/test_deep_scan_store.ts | 452 | async function testTransientIdempotentPersistenceRetries() { | CODE |
| LOW | …s/codex-security/mcp-app/tests/test_deep_scan_store.ts | 489 | async function testTransientTimeoutAndNestedCauseRetries() { | CODE |
| LOW | …s/codex-security/mcp-app/tests/test_deep_scan_store.ts | 527 | async function testPersistenceRetriesRemainInsideTheWriteQueue() { | CODE |
| LOW | …s/codex-security/mcp-app/tests/test_deep_scan_store.ts | 555 | async function testPersistenceRetryExhaustionPreservesDiagnostics() { | CODE |
| LOW | …s/codex-security/mcp-app/tests/test_deep_scan_store.ts | 642 | async function testDeterministicPersistenceFailuresAreNotRetried() { | CODE |
| LOW | …s/codex-security/mcp-app/tests/test_deep_scan_store.ts | 727 | async function testNonIdempotentMutationsAreNotRetried() { | CODE |
| LOW | …s/codex-security/mcp-app/tests/test_deep_scan_store.ts | 756 | function idempotentPersistenceScenarios() { | CODE |
| LOW | …s/codex-security/mcp-app/tests/test_deep_scan_store.ts | 858 | function testInvalidPersistedConfig() { | CODE |
| LOW | …s/codex-security/mcp-app/tests/test_deep_scan_store.ts | 909 | function testConfiguredMaximumDurationParsing() { | CODE |
| LOW | …security/mcp-app/tests/test_compact_artifact_server.ts | 100 | async function testCompactDiffScanCompletion( | CODE |
| LOW | …security/mcp-app/tests/test_compact_artifact_server.ts | 328 | async function testSemanticScanDraftCompletion( | CODE |
| LOW | …security/mcp-app/tests/test_compact_artifact_server.ts | 865 | async function testClaimedParentArtifactOperations( | CODE |
| LOW | …security/mcp-app/tests/test_compact_artifact_server.ts | 1306 | async function testDiscoveryWorkerToolList(bundle: string) { | CODE |
| LOW | …security/mcp-app/tests/test_compact_artifact_server.ts | 1417 | async function testReducerWorkerToolList(bundle: string) { | CODE |
| LOW | …odex-security/mcp-app/tests/test_artifact_discovery.ts | 234 | async function verifyNormalizationAndPagination(context: ArtifactContext) { | CODE |
| LOW | …odex-security/mcp-app/tests/test_artifact_discovery.ts | 320 | async function verifyNormalizerFailuresPreserveOutput( | CODE |
| LOW | …odex-security/mcp-app/tests/test_artifact_discovery.ts | 424 | async function verifyNormalizationRunsOffThread(context: ArtifactContext) { | CODE |
| LOW | …odex-security/mcp-app/tests/test_artifact_discovery.ts | 467 | async function verifyDiffInventoryAllowsDeletedFiles() { | CODE |
| LOW | …odex-security/mcp-app/tests/test_artifact_discovery.ts | 709 | async function verifyReaderPreservesSharedPhaseRecords( | CODE |
| LOW | …odex-security/mcp-app/tests/test_artifact_discovery.ts | 774 | async function verifyMalformedLedgerIsNotModified() { | CODE |
| LOW | plugins/codex-security/mcp-app/tests/sandbox-state.ts | 3 | export function readOnlyParentSandboxState(pluginRoot: string) { | CODE |
| LOW | …-security/mcp-app/tests/scan-draft-recovery-fixture.ts | 30 | export async function recordCodexSecurityScanDraft( | CODE |
| LOW | …ecurity/mcp-app/tests/deep_scan_coordinator_fixture.ts | 727 | export async function assertNoPublishedCandidates(scanDir: string) { | CODE |
| LOW | …dex-security/mcp-app/tests/test_artifact_scan_draft.ts | 3017 | async function archiveFirstWorkerAttempt(output: string) { | CODE |
| LOW | …p/tests/test_deep_scan_permission_profile_preflight.ts | 162 | async function testAllowedProfileAndRawArgv() { | CODE |
| LOW | …p/tests/test_deep_scan_permission_profile_preflight.ts | 231 | async function testProvidedEnvForwardedWithoutMutation() { | CODE |
| LOW | …p/tests/test_deep_scan_permission_profile_preflight.ts | 254 | async function testOpenAiApiKeyFallbackPreservesNativeAuthentication() { | CODE |
| 1590 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …rity/mcp-app/tests/test_deep_scan_store_integration.ts | 575 | print("locked", flush=True) | CODE |
| HIGH | …ity/mcp-app/tests/test_artifact_scan_draft_recovery.ts | 191 | print(json.dumps([first[2],replay[2]]))`, | CODE |
| HIGH | …s/codex-security/mcp-app/src/helpers/rank-worklists.ts | 196 | print( | CODE |
| HIGH | …odex-security/mcp-app/src/helpers/deep-review-input.ts | 29 | print( | CODE |
| HIGH | …odex-security/mcp-app/src/helpers/deep-review-input.ts | 60 | print(message); | CODE |
| HIGH | …codex-security/mcp-app/src/helpers/bind-repo-scopes.ts | 23 | print( | CODE |
| HIGH | …codex-security/mcp-app/src/helpers/bind-repo-scopes.ts | 67 | print(`Bound ${scopes.length} requested scopes into the scan contract`); | CODE |
| HIGH | …gins/codex-security/mcp-app/src/helpers/rank-shards.ts | 158 | print(`Wrote ${count} rank shards to ${directory}`); | CODE |
| HIGH | …gins/codex-security/mcp-app/src/helpers/rank-shards.ts | 211 | print(`Merged ${merged.length} ranking rows into ${output}`); | CODE |
| HIGH | …gins/codex-security/mcp-app/src/helpers/rank-shards.ts | 236 | print( | CODE |
| HIGH | …gins/codex-security/mcp-app/src/helpers/rank-shards.ts | 253 | print(`Validated ${rows.length} ranking rows in ${output}`); | CODE |
| HIGH | plugins/codex-security/mcp-app/src/helpers/rank-pool.ts | 77 | print( | CODE |
| HIGH | plugins/codex-security/mcp-app/src/helpers/rank-pool.ts | 239 | print( | CODE |
| HIGH | plugins/codex-security/mcp-app/src/helpers/rank-pool.ts | 271 | print( | CODE |
| HIGH | plugins/codex-security/mcp-app/src/helpers/rank-pool.ts | 306 | print( | CODE |
| HIGH | sdk/typescript/tests-ts/publication-store.test.ts | 588 | print(json.dumps({table: connection.execute("SELECT COUNT(*) FROM " + table).fetchone()[0] for table in ("scans", "findi | STRING |
| HIGH | sdk/typescript/tests-ts/repository-findings.test.ts | 61 | print(json.dumps(result)) | STRING |
| HIGH | sdk/typescript/tests-ts/findings-store.test.ts | 189 | print("null")`, | CODE |
| HIGH | sdk/typescript/tests-ts/findings-store.test.ts | 246 | print("null")`, | CODE |
| HIGH | sdk/typescript/tests-ts/findings-store.test.ts | 266 | print(db.execute("SELECT COUNT(*) FROM finding_embeddings").fetchone()[0])`; | CODE |
| HIGH | …/typescript/tests-ts/workbench-canonical-paths.test.ts | 37 | " return True", | CODE |
| HIGH | …/typescript/tests-ts/workbench-canonical-paths.test.ts | 77 | " return False", | CODE |
| HIGH | …/typescript/tests-ts/workbench-canonical-paths.test.ts | 78 | " return True", | CODE |
| HIGH | …pescript/tests-ts/finding-workflow-integration.test.ts | 966 | print(json.dumps([dict(row) for row in db.execute("SELECT * FROM finding_workflow_reviews ORDER BY review_key")]))`, | CODE |
| HIGH | sdk/typescript/tests-ts/workbench-scan-history.test.ts | 120 | print(json.dumps(comparison['matchingInputs'])) | STRING |
| HIGH | sdk/typescript/tests-ts/workbench-scan-history.test.ts | 198 | print(json.dumps({'summary': accepted['summary'], | STRING |
| HIGH | sdk/typescript/tests-ts/workbench-scan-history.test.ts | 266 | print(json.dumps({'unchanged': rows() == original, 'comparisons': len(original), | CODE |
| HIGH | sdk/typescript/tests-ts/workbench-scan-history.test.ts | 489 | print(json.dumps({'uncertain': uncertain, 'excluded': excluded, 'resolved': resolved, | CODE |
| HIGH | sdk/typescript/tests-ts/workbench-scan-history.test.ts | 612 | print(json.dumps({ | STRING |
| HIGH | sdk/typescript/tests-ts/workbench-scan-history.test.ts | 676 | print(json.dumps({'withLinks': with_links, 'withoutLinks': collect_history()})) | STRING |
| HIGH | sdk/typescript/tests-ts/contract.test.ts | 820 | " return False", | CODE |
| HIGH | sdk/typescript/tests-ts/contract.test.ts | 821 | " return True", | CODE |
| HIGH | …cript/tests-ts/workbench-windows-compatibility.test.ts | 34 | " def is_dir(self): return True", | CODE |
| HIGH | sdk/typescript/src/runtime.ts | 126 | print(json.dumps({ | CODE |
| HIGH | sdk/typescript/src/runtime.ts | 1611 | print(json.dumps(result, allow_nan=False, sort_keys=True)) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …odex-security/tests/test_deep_scan_request_identity.py | 1 | CODE | |
| LOW | …s/codex-security/tests/test_saved_deferred_identity.py | 1 | CODE | |
| LOW | …odex-security/tests/test_workbench_checkpoint_heads.py | 1 | CODE | |
| LOW | plugins/codex-security/tests/test_workbench_archive.py | 1 | CODE | |
| LOW | plugins/codex-security/tests/test_plugin_contract.py | 1 | CODE | |
| LOW | plugins/codex-security/tests/conftest.py | 1 | CODE | |
| LOW | …/codex-security/tests/test_validate_tracking_source.py | 1 | CODE | |
| LOW | plugins/codex-security/tests/test_workbench_db.py | 1 | CODE | |
| LOW | plugins/codex-security/tests/test_workbench_target.py | 1 | CODE | |
| LOW | …ns/codex-security/tests/test_finalize_scan_contract.py | 1 | CODE | |
| LOW | …urity/tests/test_workbench_remediation_cancellation.py | 1 | CODE | |
| LOW | …s/codex-security/tests/test_portable_artifact_paths.py | 1 | CODE | |
| LOW | …odex-security/tests/test_workbench_prompt_only_scan.py | 1 | CODE | |
| LOW | …/codex-security/tests/test_workbench_native_indexes.py | 1 | CODE | |
| LOW | …ns/codex-security/tests/test_workbench_cancellation.py | 1 | CODE | |
| LOW | …-security/tests/test_workbench_setup_and_migrations.py | 1 | CODE | |
| LOW | …gins/codex-security/tests/test_workbench_db_exports.py | 1 | CODE | |
| LOW | …security/tests/test_workbench_standard_deep_results.py | 1 | CODE | |
| LOW | …ins/codex-security/tests/test_windows_scope_streams.py | 1 | CODE | |
| LOW | …/codex-security/tests/test_finalize_scan_timestamps.py | 1 | CODE | |
| LOW | …dex-security/tests/test_workbench_draft_publication.py | 1 | CODE | |
| LOW | …/codex-security/tests/test_windows_scan_local_files.py | 1 | CODE | |
| LOW | …ex-security/tests/test_workbench_output_permissions.py | 1 | CODE | |
| LOW | …gins/codex-security/tests/test_workbench_scan_usage.py | 1 | CODE | |
| LOW | …ecurity/tests/test_deep_scan_successful_publication.py | 1 | CODE | |
| LOW | plugins/codex-security/tests/test_report_projection.py | 1 | CODE | |
| LOW | plugins/codex-security/tests/test_rank_preview.py | 1 | CODE | |
| LOW | …ex-security/tests/test_workbench_completion_binding.py | 1 | CODE | |
| LOW | …codex-security/tests/test_git_inventory_regressions.py | 1 | CODE | |
| LOW | …ns/codex-security/tests/test_workbench_scan_archive.py | 1 | CODE | |
| LOW | …gins/codex-security/tests/test_track_findings_skill.py | 1 | CODE | |
| LOW | …codex-security/tests/test_deep_scan_stop_conditions.py | 1 | CODE | |
| LOW | …ugins/codex-security/tests/test_capability_profiles.py | 1 | CODE | |
| LOW | plugins/codex-security/tests/workbench_test_support.py | 1 | CODE | |
| LOW | …ity/tests/test_deep_security_scan_concurrency_guard.py | 1 | CODE | |
| LOW | plugins/codex-security/tests/test_sarif_projection.py | 1 | CODE | |
| LOW | plugins/codex-security/tests/test_workbench_feedback.py | 1 | CODE | |
| LOW | plugins/codex-security/tests/source_cases.py | 8 | CODE | |
| LOW | …s/codex-security/tests/test_threat_model_projection.py | 1 | CODE | |
| LOW | plugins/codex-security/tests/test_runtime_settings.py | 1 | CODE | |
| LOW | …-security/tests/test_resolved_deferred_finalization.py | 1 | CODE | |
| LOW | …ugins/codex-security/tests/test_workbench_deep_scan.py | 1 | CODE | |
| LOW | …ns/codex-security/tests/test_saved_deferred_unicode.py | 1 | CODE | |
| LOW | …ns/codex-security/tests/test_workbench_local_dedupe.py | 1 | CODE | |
| LOW | …ins/codex-security/tests/test_deep_scan_publication.py | 1 | CODE | |
| LOW | …ns/codex-security/tests/test_workbench_scan_history.py | 1 | CODE | |
| LOW | plugins/codex-security/tests/test_finding_preview.py | 1 | CODE | |
| LOW | plugins/codex-security/tests/test_windows_report_e2e.py | 1 | CODE | |
| LOW | …dex-security/tests/test_workbench_remediation_retry.py | 1 | CODE | |
| LOW | plugins/codex-security/tests/test_cli_dry_runs.py | 1 | CODE | |
| LOW | …ex-security/tests/test_workbench_saved_source_order.py | 1 | CODE | |
| LOW | …ns/codex-security/tests/test_scan_contract_examples.py | 1 | CODE | |
| LOW | …ns/codex-security/tests/test_validate_scan_contract.py | 1 | CODE | |
| LOW | …dex-security/tests/test_workbench_finding_workflows.py | 1 | CODE | |
| LOW | …-security/tests/test_workbench_native_index_queries.py | 1 | CODE | |
| LOW | …s/codex-security/tests/test_generate_in_scope_files.py | 1 | CODE | |
| LOW | …ugins/codex-security/tests/test_generate_rank_input.py | 1 | CODE | |
| LOW | plugins/codex-security/tests/test_workbench_handoff.py | 1 | CODE | |
| LOW | …gins/codex-security/tests/test_workbench_timestamps.py | 1 | CODE | |
| LOW | plugins/codex-security/scripts/workbench_feedback.py | 3 | CODE | |
| 33 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …-security/tests/test_workbench_setup_and_migrations.py | 401 | except RuntimeError: | CODE |
| HIGH | plugins/codex-security/scripts/workbench_scan_start.py | 208 | except FileNotFoundError: | CODE |
| HIGH | plugins/codex-security/scripts/deep_scan_workbench.py | 859 | except (OSError, KeyError, TypeError, ValueError): | CODE |
| HIGH | …ins/codex-security/scripts/windows_scan_local_files.py | 709 | except OSError: | CODE |
| HIGH | …ugins/codex-security/scripts/finalize_scan_contract.py | 773 | except FileNotFoundError: | CODE |
| HIGH | …ugins/codex-security/scripts/finalize_scan_contract.py | 238 | except (ContractError, OSError): | CODE |
| HIGH | …ugins/codex-security/scripts/finalize_scan_contract.py | 826 | except FileNotFoundError: | CODE |
| HIGH | …ugins/codex-security/scripts/finalize_scan_contract.py | 1938 | except ContractError: | CODE |
| HIGH | …ugins/codex-security/scripts/finalize_scan_contract.py | 548 | except FileExistsError: | CODE |
| HIGH | …ugins/codex-security/scripts/finalize_scan_contract.py | 1919 | except ContractError: | CODE |
| HIGH | …ugins/codex-security/scripts/finalize_scan_contract.py | 805 | except OSError: | CODE |
| HIGH | …gins/codex-security/scripts/workbench_saved_results.py | 82 | except (ContractError, OSError, SystemExit): | CODE |
| HIGH | …gins/codex-security/scripts/workbench_saved_results.py | 878 | except FileNotFoundError: | CODE |
| HIGH | …gins/codex-security/scripts/workbench_saved_results.py | 427 | except (ContractError, OSError, ValueError): | CODE |
| HIGH | plugins/codex-security/scripts/workbench_db.py | 703 | except SystemExit: | CODE |
| HIGH | plugins/codex-security/scripts/workbench_db.py | 2622 | except SystemExit: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …odex-security/tests/test_workbench_checkpoint_heads.py | 806 | CODE | |
| LOW | plugins/codex-security/tests/test_workbench_target.py | 121 | CODE | |
| LOW | …ns/codex-security/tests/test_finalize_scan_contract.py | 758 | CODE | |
| LOW | …ns/codex-security/tests/test_finalize_scan_contract.py | 1392 | CODE | |
| LOW | …ns/codex-security/tests/test_finalize_scan_contract.py | 1939 | CODE | |
| LOW | …odex-security/tests/test_workbench_prompt_only_scan.py | 241 | CODE | |
| LOW | …odex-security/tests/test_workbench_prompt_only_scan.py | 301 | CODE | |
| LOW | …-security/tests/test_workbench_setup_and_migrations.py | 2391 | CODE | |
| LOW | …gins/codex-security/tests/test_workbench_db_exports.py | 555 | CODE | |
| LOW | …gins/codex-security/tests/test_workbench_db_exports.py | 1201 | CODE | |
| LOW | …ns/codex-security/tests/test_workbench_scan_archive.py | 197 | CODE | |
| LOW | plugins/codex-security/tests/workbench_test_support.py | 136 | CODE | |
| LOW | …s/codex-security/tests/test_threat_model_projection.py | 499 | CODE | |
| LOW | …s/codex-security/tests/test_threat_model_projection.py | 653 | CODE | |
| LOW | …ns/codex-security/tests/test_validate_scan_contract.py | 62 | CODE | |
| LOW | plugins/codex-security/scripts/finding_preview.py | 29 | CODE | |
| LOW | plugins/codex-security/scripts/finding_preview.py | 346 | CODE | |
| LOW | plugins/codex-security/scripts/workbench_scan_start.py | 90 | CODE | |
| LOW | plugins/codex-security/scripts/rank_preview.py | 27 | CODE | |
| LOW | …ugins/codex-security/scripts/workbench_local_dedupe.py | 23 | CODE | |
| LOW | …ugins/codex-security/scripts/workbench_scan_history.py | 59 | CODE | |
| LOW | …ugins/codex-security/scripts/workbench_scan_history.py | 503 | CODE | |
| LOW | …gins/codex-security/scripts/generate_in_scope_files.py | 88 | CODE | |
| LOW | …gins/codex-security/scripts/generate_in_scope_files.py | 160 | CODE | |
| LOW | plugins/codex-security/scripts/deep_scan_workbench.py | 301 | CODE | |
| LOW | plugins/codex-security/scripts/deep_scan_workbench.py | 687 | CODE | |
| LOW | plugins/codex-security/scripts/deep_scan_workbench.py | 886 | CODE | |
| LOW | plugins/codex-security/scripts/deep_scan_workbench.py | 1077 | CODE | |
| LOW | …ins/codex-security/scripts/windows_scan_local_files.py | 503 | CODE | |
| LOW | …ins/codex-security/scripts/windows_scan_local_files.py | 615 | CODE | |
| LOW | …ins/codex-security/scripts/windows_scan_local_files.py | 655 | CODE | |
| LOW | …ugins/codex-security/scripts/finalize_scan_contract.py | 175 | CODE | |
| LOW | …ugins/codex-security/scripts/finalize_scan_contract.py | 289 | CODE | |
| LOW | …ugins/codex-security/scripts/finalize_scan_contract.py | 356 | CODE | |
| LOW | …ugins/codex-security/scripts/finalize_scan_contract.py | 541 | CODE | |
| LOW | …ugins/codex-security/scripts/finalize_scan_contract.py | 570 | CODE | |
| LOW | …ugins/codex-security/scripts/finalize_scan_contract.py | 727 | CODE | |
| LOW | …ugins/codex-security/scripts/finalize_scan_contract.py | 1019 | CODE | |
| LOW | …ugins/codex-security/scripts/finalize_scan_contract.py | 1189 | CODE | |
| LOW | …ugins/codex-security/scripts/finalize_scan_contract.py | 1850 | CODE | |
| LOW | …ugins/codex-security/scripts/finalize_scan_contract.py | 2005 | CODE | |
| LOW | …ugins/codex-security/scripts/finalize_scan_contract.py | 2322 | CODE | |
| LOW | …ugins/codex-security/scripts/finalize_scan_contract.py | 2814 | CODE | |
| LOW | …ugins/codex-security/scripts/finalize_scan_contract.py | 3096 | CODE | |
| LOW | …ugins/codex-security/scripts/finalize_scan_contract.py | 357 | CODE | |
| LOW | plugins/codex-security/scripts/workbench_schema.py | 47 | CODE | |
| LOW | plugins/codex-security/scripts/workbench_schema.py | 101 | CODE | |
| LOW | plugins/codex-security/scripts/generate_rank_input.py | 104 | CODE | |
| LOW | plugins/codex-security/scripts/generate_rank_input.py | 224 | CODE | |
| LOW | plugins/codex-security/scripts/generate_rank_input.py | 272 | CODE | |
| LOW | plugins/codex-security/scripts/generate_rank_input.py | 362 | CODE | |
| LOW | …/codex-security/scripts/workbench_finding_workflows.py | 117 | CODE | |
| LOW | plugins/codex-security/scripts/config_preflight.py | 208 | CODE | |
| LOW | plugins/codex-security/scripts/config_preflight.py | 527 | CODE | |
| LOW | …gins/codex-security/scripts/threat_model_projection.py | 46 | CODE | |
| LOW | plugins/codex-security/scripts/workbench_scan_usage.py | 253 | CODE | |
| LOW | plugins/codex-security/scripts/workbench_scan_usage.py | 375 | CODE | |
| LOW | plugins/codex-security/scripts/workbench_scan_usage.py | 468 | CODE | |
| LOW | plugins/codex-security/scripts/workbench_target.py | 438 | CODE | |
| LOW | plugins/codex-security/scripts/workbench_target.py | 633 | CODE | |
| 14 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | plugins/codex-security/tests/test_workbench_db.py | 0 | update deep_scan_runs set status = 'succeeded', phase = 'terminal', terminal_reason = 'saturated', completed_at = update | STRING |
| HIGH | …ex-security/tests/test_workbench_completion_binding.py | 0 | update deep_scan_runs set status = 'succeeded', phase = 'terminal', terminal_reason = 'saturated', completed_at = update | STRING |
| HIGH | plugins/codex-security/tests/workbench_test_support.py | 0 | update deep_scan_runs set status = 'succeeded', phase = 'terminal', terminal_reason = 'saturated', completed_at = update | STRING |
| HIGH | …ugins/codex-security/tests/test_workbench_deep_scan.py | 0 | update deep_scan_runs set status = 'succeeded', phase = 'terminal', terminal_reason = 'saturated', completed_at = update | STRING |
| HIGH | plugins/codex-security/scripts/deep_scan_workbench.py | 0 | update deep_scan_runs set status = 'succeeded', phase = 'terminal', terminal_reason = 'saturated', completed_at = update | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …ins/codex-security/mcp-app/tests/test_mcp_app_smoke.ts | 3171 | filteredFindingsPage.result.structuredContent.findingsPage.findings.map( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | plugins/codex-security/tests/test_workbench_target.py | 682 | def set_default_subprocess_encoding(monkeypatch: pytest.MonkeyPatch, encoding: str) -> None: | STRING |
| LOW | plugins/codex-security/tests/workbench_test_support.py | 129 | def update_digest_field(digest: Any, label: bytes, value: bytes) -> None: | CODE |
| LOW | …ugins/codex-security/scripts/finalize_scan_contract.py | 2231 | def update_hash(current: int) -> None: | CODE |
| LOW⚡ | plugins/codex-security/scripts/workbench_target.py | 375 | def _update_digest_field_header(digest: Any, label: bytes, value_size: int) -> None: | CODE |
| LOW⚡ | plugins/codex-security/scripts/workbench_target.py | 381 | def update_digest_field(digest: Any, label: bytes, value: bytes) -> None: | CODE |
| LOW | …ugins/codex-security/scripts/workbench/runtime_toml.py | 5 | __all__ = ["tomllib"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | sdk/typescript/docs/cli.md | 42 | $env:OPENAI_API_KEY = "<your-api-key>" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | plugins/codex-security/scripts/workbench_scan_usage.py | 311 | descendants.ancestry || edges.child_thread_id || '|', | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | plugins/codex-security/tests/workbench_test_support.py | 745 | CODE | |
| LOW | …ugins/codex-security/tests/test_workbench_deep_scan.py | 127 | CODE | |
| LOW | …ns/codex-security/tests/test_workbench_scan_history.py | 186 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | sdk/typescript/tests-ts/codex-review.test.ts | 856 | "I'm unable to assist with this comparison.", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | sdk/typescript/src/project-config.ts | 195 | "# This file is trusted like CLI options. Keep it outside untrusted inputs.", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | sdk/typescript/src/scan-dashboard.ts | 121 | readonly #options: ScanDashboardOptions; | COMMENT |