← Codex SecurityCONTENT HISTORY

Update to Codex Security

Snapshot Oct 7, 2026 · 06:02 UTC · version 0.1.32

WHAT CHANGED · RULE-BASED ANALYSIS

Package or technical metadata updated

Package contents changed in 77 files: .app.json, .codex-plugin/plugin.json, .mcp.json, …. Open the file diff to inspect the edits.

Observed in package metadata. These changes alone do not establish a new customer-facing feature.

Package file

Before

e4d5b22326ee380de5d779f7b5ba590c8d1bee9a80e8869fb2bd7f4def8e974d

After

a7bbe314059c7311e169474823e3978f267e560c3e961ba49fb94032da9843fe

Package file

Before

480

After

479

Package file

Before

3ddcc187fe2f1aff961bf55444e70bfbc3f825b6185ab3f29860d1a813a395f9

After

527d1a0db286884729572d400b0ad9b0ff852d4a12b36228ff5fbef180f7de9d

Package file

Before

40b84baf510169eadfd5f0fe0ad95001caedb7bc662d77c9ac2a4fbec7dd0845

After

7c5968060f6e848859ce02450d6e02e67029d8d39011bbda1059b19de6309ebf

Compare saved observations

Download comparison JSON

Changed files

.app.json →

.codex-plugin/plugin.json →

.mcp.json →

examples/completed-scan/report.md →

integrity.json →

mcp/helpers.mjs.br.part-000 →

mcp/native/THIRD_PARTY_NOTICES.txt →

mcp/native/darwin-arm64/unix.node →

mcp/native/darwin-x64/unix.node →

mcp/native/linux-arm64-gnu/unix.node →

mcp/native/linux-arm64-musl/unix.node →

mcp/native/linux-x64-gnu/unix.node →

mcp/native/linux-x64-musl/unix.node →

mcp/native/win32-arm64/windows.node →

mcp/native/win32-x64/windows.node →

mcp/server.mjs.br.part-000 →

mcp/server.mjs.br.part-001 →

references/artifact-storage.md →

references/config-preflight.md →

references/core-scan.md →

references/final-report.md →

references/scan-artifacts.md →

references/scan-contract.md →

references/threat-model.md →

schemas/coverage.schema.json →

schemas/scan-manifest.schema.json →

schemas/tools/scan-draft.schema.json →

scripts/config_preflight.py →

scripts/deep_scan_workbench.py →

scripts/filesystem_identity.py →

scripts/finalize_scan_contract.py →

scripts/finding_preview.py →

scripts/generate_in_scope_files.py →

scripts/generate_rank_input.py →

scripts/launch_codex_security_mcp →

scripts/normalize_candidates.py →

scripts/rank_preview.py →

scripts/report_projection.py →

scripts/snapshot_sqlite.py →

scripts/threat_model_projection.py →

scripts/windows_scan_local_files.py →

scripts/workbench/storage.py →

scripts/workbench_cli.py →

scripts/workbench_constants.py →

scripts/workbench_db.py →

scripts/workbench_finding_index.py →

scripts/workbench_native_indexes.py →

scripts/workbench_progress.py →

scripts/workbench_publication.py →

scripts/workbench_remediation.py →

scripts/workbench_saved_results.py →

scripts/workbench_scan_start.py →

scripts/workbench_scan_usage.py →

scripts/workbench_schema.py →

scripts/workbench_severity.py →

scripts/workbench_source_excerpt.py →

scripts/workbench_target.py →

scripts/workbench_target_state.py →

scripts/workbench_validation.py →

skills/assess-patch-risk/SKILL.md →

skills/assess-patch-risk/scripts/validate_patch_risk_assessment.py →

skills/attack-path-analysis/SKILL.md →

skills/deep-security-scan/SKILL.md →

skills/finding-discovery/SKILL.md →

skills/propose-security-hardening/references/proposal-format.md →

skills/security-diff-scan/SKILL.md →

skills/security-scan/SKILL.md →

skills/security-scan/references/desktop-scan.md →

skills/security-scan/references/scan-artifacts-and-ledger.md →

skills/threat-model/SKILL.md →

skills/track-findings/SKILL.md →

skills/track-findings/references/github-security-advisories.md →

skills/track-findings/references/jira.md →

skills/triage-finding/SKILL.md →

skills/triage-finding/agents/openai.yaml →

skills/triage-finding/references/ticket-intake.md →

skills/triage-finding/references/triage-result-contract.md →

skills/security-scan/SKILL.md

--- before
+++ after
@@ -23,7 +23,20 @@
 
 1. Resolve the repository, requested scope, and output scan directory from the host-provided scan context when available; otherwise use the requested output directory or `<platform_temp>/codex-security-scans/<repo_name>/<scan_id>`. Preserve the exact user context, supplied threat model, applicable inherited `SECURITY.md` guidance, and optional `CODEX_SECURITY_KNOWLEDGE_BASE` for the core audit. Resolve `<python_command>` from the configured interpreter (`"$PYTHON"` in POSIX shells or `& "$env:PYTHON"` in PowerShell), otherwise use `python3` on Unix-like hosts or `python` on Windows. Only when `CODEX_SECURITY_TARGET_PATHS_FILE` is supplied, resolve every authorized source path before review with `<python_command> <plugin_dir>/scripts/generate_rank_input.py make-repo-scope-input --repo <repo_root> --scopes-file <target_paths_file> --out <scan_dir>/scoped-source-input.jsonl`; use `"$CODEX_SECURITY_TARGET_PATHS_FILE"` in POSIX shells or `"$env:CODEX_SECURITY_TARGET_PATHS_FILE"` in PowerShell and honor repository ignore rules for directory descendants while retaining every directly requested file. Never print, modify, or treat the scope input as shell syntax; pass it to the core audit without widening the authorized target or scope.
 2. Read `../../references/core-scan.md` once and perform its complete source-backed security audit against the resolved target, authorized scope, exact user context, supplied threat model, inherited security policy, optional knowledge base, available workers, and any resolved scoped-source inventory. Retain the resulting complete semantic `scope`, `threatModel`, `findings`, and `coverage`; preserve every finding's source evidence, calibrated severity, confidence, root cause, validation, attack path, and honest coverage.
-3. For a host-backed scan, save `complete: false` checkpoints during the core audit, then submit one accepted final semantic draft with `record_codex_security_scan_draft({ scanId, complete: true, handoffClaimToken?, scope?, threatModel, findings, coverage })`; let the workbench derive its authoritative target, scope, coverage metadata, surface IDs, finding identities, and fingerprints. If the draft is explicitly rejected before writing, correct only the identified fields without dropping valid findings or evidence and retry the same scan at most twice. For an SDK-owned or prompt-only headless scan, write unsealed canonical `scan-manifest.json`, `findings.json`, and `coverage.json`; use `scoped_path` for both coverage fields when a scope was requested, otherwise set `coverage.mode` to `repository` and `coverage.inventoryStrategy` to `directory` for a non-Git directory or `repository` for a Git-backed target. Omit `scan.sealedAt` and `scan.artifacts`; an SDK scan preserves its exact registered directory and all SDK-provided scan and target values. When `CODEX_SECURITY_TARGET_PATHS_FILE` is supplied on either file-authored path, bind its exact requested paths with `<python_command> <plugin_dir>/scripts/generate_rank_input.py bind-repo-scopes --scopes-file <target_paths_file> --manifest <scan_dir>/scan-manifest.json --coverage <scan_dir>/coverage.json`, using the same shell-specific target-paths reference.
-4. Verify all three canonical JSON files exist. For an SDK-owned scan, return control without finalizing, sealing, generating `report.md`, or starting another scan; the SDK owns completion. For another host-backed scan, call `complete_codex_security_scan({ scanId, handoffClaimToken? })` once. For a prompt-only headless scan, run `<python_command> <plugin_dir>/scripts/finalize_scan_contract.py --scan-dir <scan_dir> --source-root <repo_root>`. Outside the SDK path, return only after completion succeeds and the generated `report.md` exists; never write the report by hand or reread the complete canonical findings unless the user explicitly requests them. Report measured token counts when returned and label partial measurement or unavailable usage honestly.
+3. For a host-backed scan, save a `complete: false` checkpoint as soon as the threat model is available, using partial coverage and no findings when none exist yet. Continue checkpointing during the core audit, then submit one accepted final semantic draft with `record_codex_security_scan_draft({ scanId, complete: true, handoffClaimToken?, scope?, threatModel, findings, coverage })`; let the workbench derive its authoritative target, scope, coverage metadata, surface IDs, finding identities, and fingerprints. On that final draft, close finished generic tasks with `coverage.resolvedDeferred: [{ id, reason }]`, using the saved IDs from `coverage.deferred` and a completion reason. Reuse saved surface IDs for updates; retain unfinished work and candidate outcomes. If the draft is explicitly rejected before writing, correct only the identified fields without dropping valid findings or evidence and retry the same scan at most twice. For an SDK-owned scan with a bound semantic draft tool, use it for the same early model checkpoint and later drafts. For an SDK-owned or prompt-only headless scan without that tool, retain the model in an early partial unsealed canonical draft and update the unsealed canonical `scan-manifest.json`, `findings.json`, and `coverage.json`; use `scoped_path` for both coverage fields when a scope was requested, otherwise set `coverage.mode` to `repository` and `coverage.inventoryStrategy` to `directory` for a non-Git directory or `repository` for a Git-backed target. Omit `scan.sealedAt` and `scan.artifacts`; an SDK scan preserves its exact registered directory and all SDK-provided scan and target values. When `CODEX_SECURITY_TARGET_PATHS_FILE` is supplied on either file-authored path, bind its exact requested paths with `<plugin_dir>/scripts/launch_codex_security_mcp --helper bind-repo-scopes --scopes-file <target_paths_file> --manifest <scan_dir>/scan-manifest.json --coverage <scan_dir>/coverage.json`, using the same shell-specific target-paths reference. For SDK scans, use the exact scope-binding command in the scan instructions so Windows batch invocation preserves literal path values. For other Windows scans, use the [PowerShell scope-binding command](#windows-scope-binding) below.
+4. Verify all three canonical JSON files exist. For an SDK-owned scan, return control without finalizing, sealing, generating `report.md` or `threatmodel.md`, or starting another scan; the SDK owns completion. For another host-backed scan, call `complete_codex_security_scan({ scanId, handoffClaimToken? })` once. For a prompt-only headless scan, run `<python_command> <plugin_dir>/scripts/finalize_scan_contract.py --scan-dir <scan_dir> --source-root <repo_root>`. Outside the SDK path, return only after completion succeeds and the generated `report.md` exists; never write the report by hand or reread the complete canonical findings unless the user explicitly requests them. Report measured token counts when returned and label partial measurement or unavailable usage honestly.
 
 Keep discovery, validation, and attack-path reasoning within this Standard workflow; do not invoke separate phase skills or load Deep or diff references. Never call Deep-only tools. Do not create ranking phases, per-file or per-candidate ledgers, separate phase worker pools, repeated phase reports, or receipt files.
+
+## Windows Scope Binding
+
+In PowerShell, replace the placeholders inside single quotes with literal paths, doubling any single quote in a path. Keep the supplied `CODEX_SECURITY_TARGET_PATHS_FILE` value unchanged:
+
+```powershell
+$env:scopePluginRoot = Convert-Path -LiteralPath '<plugin_dir>' -ErrorAction Stop
+$env:scopeScanDir = Convert-Path -LiteralPath '<scan_dir>' -ErrorAction Stop
+$env:scopeTargetPaths = Convert-Path -LiteralPath $env:CODEX_SECURITY_TARGET_PATHS_FILE -ErrorAction Stop
+cmd.exe /d /v:off /s /c '""%scopePluginRoot%\scripts\launch_codex_security_mcp.cmd" --helper bind-repo-scopes --scopes-file "%scopeTargetPaths%" --manifest "%scopeScanDir%\scan-manifest.json" --coverage "%scopeScanDir%\coverage.json""'
+```
+
+The assigned variables are temporary values in the calling shell, not application settings. Resolve paths against PowerShell's current location before CMD starts, including when that location is a UNC share. Missing paths stop the invocation with PowerShell's path error. Resolution preserves literal path characters and leaves the supplied scope-file environment value unchanged. CMD expands the references once, preserving literal `%` and `!` in the paths.
Full technical diff · 148 changed fields

changed /files/.app.json/sha256

BEFORE
"e4d5b22326ee380de5d779f7b5ba590c8d1bee9a80e8869fb2bd7f4def8e974d"
AFTER
"a7bbe314059c7311e169474823e3978f267e560c3e961ba49fb94032da9843fe"

changed /files/.app.json/size

BEFORE
480
AFTER
479

changed /files/.codex-plugin~1plugin.json/sha256

BEFORE
"3ddcc187fe2f1aff961bf55444e70bfbc3f825b6185ab3f29860d1a813a395f9"
AFTER
"527d1a0db286884729572d400b0ad9b0ff852d4a12b36228ff5fbef180f7de9d"

changed /files/.mcp.json/sha256

BEFORE
"40b84baf510169eadfd5f0fe0ad95001caedb7bc662d77c9ac2a4fbec7dd0845"
AFTER
"7c5968060f6e848859ce02450d6e02e67029d8d39011bbda1059b19de6309ebf"

changed /files/.mcp.json/size

BEFORE
1649
AFTER
1679

changed /files/examples~1completed-scan~1report.md/sha256

BEFORE
"c2083b2f763ed5ddcee4524ee01025c9b8996e1e9740263d751494b7a61fe82e"
AFTER
"83b7c709c0b49d1500b52e61a88ea70b8423ebebec38308b1294cf094838b66f"

changed /files/examples~1completed-scan~1report.md/size

BEFORE
2945
AFTER
4116

changed /files/integrity.json/sha256

BEFORE
"d8f7683d4ed54915958087c1532c15a0eb0e87db1424addea133794979b609cc"
AFTER
"6b342df66fb9b5ce7fc8c9de0e974b59d21340cdc06167df46d1a19bd4ea9441"

changed /files/integrity.json/size

BEFORE
17616
AFTER
17465

changed /files/mcp~1helpers.mjs.br.part-000/sha256

BEFORE
"a771236cf650b155f4afc89169897ca199bafaa673187b781904df8bee8af96a"
AFTER
"6299f73c92c4f924bffc6b1bed001480603473967006b3e75941bc49a21f18d5"

changed /files/mcp~1helpers.mjs.br.part-000/size

BEFORE
6539
AFTER
63398

changed /files/mcp~1native~1THIRD_PARTY_NOTICES.txt/sha256

BEFORE
"bcb3277e216ef458f18b80ddf97e1b7c2827e920a2c432077ff6f7d060281445"
AFTER
"16ac63908855f5bb7eab864923cc1855b406bd7051dfcd70d7e69684f6c69955"

changed /files/mcp~1native~1darwin-arm64~1unix.node/sha256

BEFORE
"1895d5afd007ce02210075683413be6088ea20af8a8608a42ac82b7d9bf90181"
AFTER
"093e87d8de3d2676fc9a2a1430f571bf4fc970b2bbef4c7ded0bf8924e45f473"

changed /files/mcp~1native~1darwin-arm64~1unix.node/size

BEFORE
371616
AFTER
354352

changed /files/mcp~1native~1darwin-x64~1unix.node/sha256

BEFORE
"94aba646f50e669b873b44f78512886dcf78be87a13feb95471e687fdc1f9f91"
AFTER
"57c45d212d35ce7599afc7b9b21693e18443753231bad1fb5146a4e224db68ec"

changed /files/mcp~1native~1darwin-x64~1unix.node/size

BEFORE
364544
AFTER
343296

changed /files/mcp~1native~1linux-arm64-gnu~1unix.node/sha256

BEFORE
"bd89532fbd21d251d9c645d6026864b0a08b16565bedb018e627e459cae0ddef"
AFTER
"6b352aaaac21f9ad9b772481429ba7bc8433a0e44ca5ffe433ad47289c3007f6"

changed /files/mcp~1native~1linux-arm64-gnu~1unix.node/size

BEFORE
465648
AFTER
465088

changed /files/mcp~1native~1linux-arm64-musl~1unix.node/sha256

BEFORE
"65475c3deb4ed355739ad7395e39204f5ffcc945c61b2e42ca357560de3fe7de"
AFTER
"3a55ec4f42202c58a29654701c31a8deab386969d14e2ab85f23e81345b4fedb"

changed /files/mcp~1native~1linux-arm64-musl~1unix.node/size

BEFORE
397992
AFTER
332456

changed /files/mcp~1native~1linux-x64-gnu~1unix.node/sha256

BEFORE
"d19c3d41b2993543a1296dc38d2183df4a947349b45f3c43618c4ecde74e3cac"
AFTER
"ed2061078400010852a9f8d3ecdf7bc0a008d13adc9e9d5c6954f5cb686a2a2a"

changed /files/mcp~1native~1linux-x64-gnu~1unix.node/size

BEFORE
386424
AFTER
365352

changed /files/mcp~1native~1linux-x64-musl~1unix.node/sha256

BEFORE
"46fa397234fad923a2e325f80e2a833ba48c79b32bbb7f0452fb7f0791de5d5e"
AFTER
"c2e4c07ac6dde175464c6315937652465b200e5f28590898663523beaf4e9ab6"

changed /files/mcp~1native~1linux-x64-musl~1unix.node/size

BEFORE
385688
AFTER
369304

changed /files/mcp~1native~1win32-arm64~1windows.node/sha256

BEFORE
"df8dd512fd8d92a8af3fede3f00a235732f847c6f3da91a2b9a702650ddd7439"
AFTER
"19f78e88fd8934038201c26b044123bc05db74f5d7065df10a32583ccbcf7a55"

changed /files/mcp~1native~1win32-arm64~1windows.node/size

BEFORE
460800
AFTER
419840

changed /files/mcp~1native~1win32-x64~1windows.node/sha256

BEFORE
"f961856d20361508fa3b5ad05a4fb04f07d0dff4d7b60f3cfc377467b518c17b"
AFTER
"5aed21edb5fe06efac49d9bd3899d6242f60b1bfac2b710b967a76c924d98298"

changed /files/mcp~1native~1win32-x64~1windows.node/size

BEFORE
496128
AFTER
453120

changed /files/mcp~1server.mjs.br.part-000/sha256

BEFORE
"0259e86ae3ceb3c555521d959fd9cddb0d67e2921fc1db9fd27a55d849a48806"
AFTER
"7ef9c7387b405b51e2aec793a86696bf793506a8f34155199035aa515b3a415a"

changed /files/mcp~1server.mjs.br.part-001/sha256

BEFORE
"3c6c93cd01ac739436e91ffe2685c5267672cf18794dbe1b19ac1ac5f93d421f"
AFTER
"94d6412009e284ecbc17bd14d07e0116d8e74e572a62198912ac5a03f95a50c2"

changed /files/mcp~1server.mjs.br.part-001/size

BEFORE
122535
AFTER
126028

changed /files/references~1artifact-storage.md/sha256

BEFORE
"851076fcdc93c7adb87f3e26ff103c5546b875e2bc08ddb676fbbca0827899b1"
AFTER
"ccce9c76f5d044fbce333d6129fbb55eb63f512c15c2ebeeca405e296f38325b"

changed /files/references~1artifact-storage.md/size

BEFORE
6975
AFTER
7632

changed /files/references~1config-preflight.md/sha256

BEFORE
"6ba05681c8d94968842fc98553b58b8fc5f1ea3da45834a41dd60179c8bbb9f3"
AFTER
"5894f9fd7efcae7034404a2c062ee3d7417520753be16ddcdb3acf5b884f048d"

changed /files/references~1config-preflight.md/size

BEFORE
18881
AFTER
19162

changed /files/references~1core-scan.md/sha256

BEFORE
"77b082eb8613cf93427ff730e4ae5d85b0a0dca37c02a8af1ea69f679ac3d1d9"
AFTER
"9c0eca53147383a89cd345eac7791ea75b954f7f083448ef25019d8f9ba30afe"

changed /files/references~1core-scan.md/size

BEFORE
19422
AFTER
22978

changed /files/references~1final-report.md/sha256

BEFORE
"9fe5a42b37964def3a8394449c3502e8b6ee50b8f85e6525313e23ba2dcd5040"
AFTER
"9c34375584c8ae76959b0eae038b86b2b8ed7874517c249fcae8715314c76298"

changed /files/references~1final-report.md/size

BEFORE
29052
AFTER
29931

changed /files/references~1scan-artifacts.md/sha256

BEFORE
"d8d416b359b9a46bd3d9cf9fb487d1ff2dc6eb32dc26e93ab47de7b1d240f479"
AFTER
"eecdccac30b8ad65bb702dc9ac8d9718dcb0b95532a94a61195268d22bdf504b"

changed /files/references~1scan-artifacts.md/size

BEFORE
10800
AFTER
11243

changed /files/references~1scan-contract.md/sha256

BEFORE
"8a84ca15feef973044bfe619b4e586bf9323b9cbc2f386b961138c76ebd6d189"
AFTER
"b362636c29d1e8b18053481abe2f97d7bb099a97040f5b63aa2702a41c1d62c8"

changed /files/references~1scan-contract.md/size

BEFORE
14043
AFTER
14537

changed /files/references~1threat-model.md/sha256

BEFORE
"f53d10c617d45d671e7cb15408f87c4f36b29026e2a6a59d1457881780b6818a"
AFTER
"f3dd2d05d7f0c61b13d29a78e810b367772fe22d5ac58adbbc00080a9495706e"

changed /files/references~1threat-model.md/size

BEFORE
14690
AFTER
15203

changed /files/schemas~1coverage.schema.json/sha256

BEFORE
"7964b132998ca4dcdd19c75f5d92483e1d44cb71462237709b968ec548c10652"
AFTER
"6ac14e659e884e9582d8bd9ba480f6364ca17309e1a3dee9469ab025a3380b11"

changed /files/schemas~1coverage.schema.json/size

BEFORE
4670
AFTER
5198

changed /files/schemas~1scan-manifest.schema.json/sha256

BEFORE
"265a48629113f77cd65a3127f1f7e95d3c39ae60e868685837a6aa31d4133310"
AFTER
"c621d4136ac81741ac8da1960c7f5e92ade22c0b5490e378ea4339b09e45b6f3"

changed /files/schemas~1scan-manifest.schema.json/size

BEFORE
8048
AFTER
9513

changed /files/schemas~1tools~1scan-draft.schema.json/sha256

BEFORE
"d5970c06e2ec00d1da5b0e84b677244f32046fd99c81901e608b7974b9ab0d89"
AFTER
"151f9dffc83e1c5b4f0a7fba20b90fb3196fdaa9719180eb0009ba2b50f75d48"

changed /files/schemas~1tools~1scan-draft.schema.json/size

BEFORE
21535
AFTER
23475

changed /files/scripts~1config_preflight.py/sha256

BEFORE
"37b9f4cee4c4dddade0e8599ea8df19aee29a99bd1be956b553ab46c3b63d407"
AFTER
"f4d4103650977d078b71f49da6b1e287b6db2f2b7b5fb08e943722a6d869354e"

changed /files/scripts~1config_preflight.py/size

BEFORE
35211
AFTER
35176

changed /files/scripts~1deep_scan_workbench.py/sha256

BEFORE
"c659739775e192dee0f90a42549a1763fb95228fb5fd17579812ab454bfc7d21"
AFTER
"5012b337503f44e086fbf021be9db8340f8ba992fe5169c5534752e900947cf5"

changed /files/scripts~1deep_scan_workbench.py/size

BEFORE
88194
AFTER
84709

changed /files/scripts~1filesystem_identity.py/sha256

BEFORE
"2b3a22761f28faa2f45f192ff14b17fd80f1f43d9d4174007c51d21f4cbf47c1"
AFTER
"5298f2012b6e48ab1106837a5440ef2b3966383e2321507a47593010bb4dd01f"

changed /files/scripts~1filesystem_identity.py/size

BEFORE
926
AFTER
893

changed /files/scripts~1finalize_scan_contract.py/sha256

BEFORE
"7f191c50ded50600b0a70be1e11b724f0355f166a690312226990d88e895d159"
AFTER
"3fa92d8e2ccadb032cf458f0fde444785e8ee5ced0abe6346c285b07ef153e27"

changed /files/scripts~1finalize_scan_contract.py/size

BEFORE
121437
AFTER
133770

changed /files/scripts~1finding_preview.py/sha256

BEFORE
"0df185e83a55cfcd9da151054de32b04e8f0bc0ceee3a2d9269d0d119fc12854"
AFTER
"ebdf8e7b7e465c0937e73e945e3593d659b2f15ff1db08d0b4a2d3b106174c4d"

changed /files/scripts~1finding_preview.py/size

BEFORE
15968
AFTER
16089

changed /files/scripts~1generate_in_scope_files.py/sha256

BEFORE
"e59583c111b4f3edd3f57e114bfb7f62a7dbad8424b4851bdfd23a8219336806"
AFTER
"0b420d786b17e4f91451b5b686fdb4d6beee3913eebb952f8fcbf220aec6230e"

changed /files/scripts~1generate_in_scope_files.py/size

BEFORE
11801
AFTER
11646

changed /files/scripts~1generate_rank_input.py/sha256

BEFORE
"0c0ead74ae98b4adfbd6a2eacb91ea492b11e60434c4259ae36213c0ddc5f3f8"
AFTER
"e7c0bddbdb7e9236f7431d84b86be4c3fc202daa8d1306d6baa930110635b671"

changed /files/scripts~1generate_rank_input.py/size

BEFORE
47421
AFTER
17899

changed /files/scripts~1launch_codex_security_mcp/sha256

BEFORE
"b82af11478dc85f666b6ec0919c53034dd287c29ffcb1af7e5debbb425618c5d"
AFTER
"56794e736a1e8f588f9959a2e707ea3ed9bc7d4d2b796c132e91d5fbed59e600"

changed /files/scripts~1launch_codex_security_mcp/size

BEFORE
1228
AFTER
1793

removed /files/scripts~1normalize_candidates.py

BEFORE
{
  "sha256": "8da9b66deec6320a3e55c033a097480bedd340f0442b31077999a2e2d82e851e",
  "size": 13136
}
AFTER
Field is absent

changed /files/scripts~1rank_preview.py/sha256

BEFORE
"013885da19308feeb0bcea8968097ba8eee8b063b23a6ca5af8a7269ca777afa"
AFTER
"627d0b89c9d4436162ab9bcb80f7aa562605695e784dc612307c7eda6fef3a7f"

changed /files/scripts~1rank_preview.py/size

BEFORE
34987
AFTER
34726

changed /files/scripts~1report_projection.py/sha256

BEFORE
"474de8e927442b1c5c7fc4adb5addd98906ae86db05da1aa20bd54ad5fca48fb"
AFTER
"1b24978a3cdb3c336ac27a2b39fb35457bade13a4aad0782710fe38ac39965cf"

changed /files/scripts~1report_projection.py/size

BEFORE
41587
AFTER
41098

changed /files/scripts~1snapshot_sqlite.py/sha256

BEFORE
"a501b0f4b6656f4f9b6a389835e73f0d8105051191646b64af4268f0d4a3eaee"
AFTER
"9e0be851702f0962070ece6e0e2959e3955fc99126f68452d175fc22bc38423b"

changed /files/scripts~1snapshot_sqlite.py/size

BEFORE
852
AFTER
1084

added /files/scripts~1threat_model_projection.py

BEFORE
Field was absent
AFTER
{
  "sha256": "32e4d5cd370a49cdc5658c3ded3d4d63ba7f41a44b34b67da87321048d088111",
  "size": 6711
}

changed /files/scripts~1windows_scan_local_files.py/sha256

BEFORE
"3034ec0b2e5d29fb8edbbd7237b91b1063b0245cdc546d85209129fef1ab2fbf"
AFTER
"c26276695435d134c1354048c3c74c3c6b0ed203158a93b63b67ef0b6bfab843"

changed /files/scripts~1windows_scan_local_files.py/size

BEFORE
24480
AFTER
24919

changed /files/scripts~1workbench~1storage.py/sha256

BEFORE
"973275d28c851b1b8408f7ac59e89a2a68057f2aecb4831e6aa2396c83a39e6d"
AFTER
"5e389073520fb7668defd433228befd9e7b9c8309c1b6024bffd6213d59f1d88"

changed /files/scripts~1workbench~1storage.py/size

BEFORE
608
AFTER
973

changed /files/scripts~1workbench_cli.py/sha256

BEFORE
"74752d032261afd831876d774724b150b35d6c8f0a3f70574c5c8ddad20f31b3"
AFTER
"959e951fa5daf326049ee61bd0773999be92600b65a9062e56b4f62fc4e2aa55"

changed /files/scripts~1workbench_cli.py/size

BEFORE
21184
AFTER
21260

changed /files/scripts~1workbench_constants.py/sha256

BEFORE
"06548d28c6d66b99f6c11f63918101c6cce39df6346fc6c5e977b9d09cd2a950"
AFTER
"0ff12b11b2ae9f71c1de6cff0afc234b035379bb1193f1ca9a56ddeb7aa32cf7"

changed /files/scripts~1workbench_constants.py/size

BEFORE
2261
AFTER
2187

changed /files/scripts~1workbench_db.py/sha256

BEFORE
"01d7d27013f24cf26cbca4a6e2331d7eb1bd0afc5e570c44376cd3e2e4fd5cb7"
AFTER
"94bf11d7d74202ae7efbdd4f70a036393d4ba013ffc2ada44172a59be41f97f2"

changed /files/scripts~1workbench_db.py/size

BEFORE
149800
AFTER
146186

changed /files/scripts~1workbench_finding_index.py/sha256

BEFORE
"410f4c2fb2bd063130e945d06aad63582b6a3e6fed9c448dcf740d85a6c3ce78"
AFTER
"4618f994786fa2300e78592fa2868bc0a585368127027c1940a0e504b0254265"

changed /files/scripts~1workbench_finding_index.py/size

BEFORE
4191
AFTER
3938

changed /files/scripts~1workbench_native_indexes.py/sha256

BEFORE
"0ada4190b7050fde77c3f04a8f36b1f6479da368aa1ed39c9587ce23645ba468"
AFTER
"114dbf1e4050302948c4b8f24d69454f127d128e3bc35e34a5f3ec9dd3b187cd"

changed /files/scripts~1workbench_native_indexes.py/size

BEFORE
9984
AFTER
9870

changed /files/scripts~1workbench_progress.py/sha256

BEFORE
"d106181710b59c3cd2d66a26d4a4556741d02d606999224a36cfb09771092a6e"
AFTER
"42c7d0b8b4d253095e1062922cd9e59b10b966ac314bef092cb78cad2217b967"

changed /files/scripts~1workbench_progress.py/size

BEFORE
13897
AFTER
13296

changed /files/scripts~1workbench_publication.py/sha256

BEFORE
"7813a522da6924e065a5a517efc54e80529c686773d084297f760e405b1cecd5"
AFTER
"9312a2962b797ed355d6b05fb375da6325aeb5c5ead5d52f2fb7114ef3ad9635"

changed /files/scripts~1workbench_publication.py/size

BEFORE
20574
AFTER
20346

changed /files/scripts~1workbench_remediation.py/sha256

BEFORE
"d0c7a4b3a283aea128802b4c1a4295580bc2ebd83c6c7108eb1ce288aaa20017"
AFTER
"96585805c4956917bb473c3b60493a3c15daa2028b074b756e36358a9ac76525"

changed /files/scripts~1workbench_remediation.py/size

BEFORE
7815
AFTER
7281

changed /files/scripts~1workbench_saved_results.py/sha256

BEFORE
"db445b651bd677359ef0a5c2bbb70e896eccd60becbd80e8c7a77aa3010f289c"
AFTER
"436b23a4d169006437985bb352bfd792da9e465c4c7506dce31bfd5e78524c6d"

changed /files/scripts~1workbench_saved_results.py/size

BEFORE
72501
AFTER
119202

changed /files/scripts~1workbench_scan_start.py/sha256

BEFORE
"8ce5f6e6d34670026f50da234c881074bd4864f41c9c574f6b2232ef968c7b1e"
AFTER
"647e54ce40a7dc5b17d6abe547406f22ca0cb4eee628938b4c21629eb8e73c35"

changed /files/scripts~1workbench_scan_start.py/size

BEFORE
8210
AFTER
7963

changed /files/scripts~1workbench_scan_usage.py/sha256

BEFORE
"4fb61d682ba05839ad57d33a8a2c9a9ffaa51ea7721c2cc7d629d2d687e2607a"
AFTER
"21d845f8967c9206351e54f94fd2b4bbfe834434e35b642992d7a829b76cd94e"

changed /files/scripts~1workbench_scan_usage.py/size

BEFORE
22317
AFTER
22094

changed /files/scripts~1workbench_schema.py/sha256

BEFORE
"6a382c792b39c0a41118a2d4325b967f3cb0dca2a2e6e84411e4e72a675372e7"
AFTER
"25ef8550ded14785fa47b19f1fa358422d8883affc94641c84e68c172e800cc0"

changed /files/scripts~1workbench_schema.py/size

BEFORE
58474
AFTER
51783

changed /files/scripts~1workbench_severity.py/sha256

BEFORE
"6313c3302a40504e8b1ebaabcc081bdcbbb97c9b348a7d63c381ea04042e898d"
AFTER
"ec74f540595e8052e295846303f31988329e0dc68fcebdd92572673555b1c99d"

changed /files/scripts~1workbench_severity.py/size

BEFORE
4489
AFTER
4625

changed /files/scripts~1workbench_source_excerpt.py/sha256

BEFORE
"0cd15d26c3a1feadf1858d1be25f9703ad09307ab1ecfb866260b8c1991cf74e"
AFTER
"5681d4a5c547404f687c644f54432c10e0770b6ba4c1e6be321664579a252a24"

changed /files/scripts~1workbench_source_excerpt.py/size

BEFORE
2989
AFTER
3210

changed /files/scripts~1workbench_target.py/sha256

BEFORE
"bc21dc8cb392a5639d787fde956f6b4d2769bf9c3f1cb805f164557df787563c"
AFTER
"08ed149295b9347ac37f2b8523c822a35f165283422c7644dabecfa236b81b72"

changed /files/scripts~1workbench_target.py/size

BEFORE
28827
AFTER
32451

changed /files/scripts~1workbench_target_state.py/sha256

BEFORE
"f48897fb7937e7474126dc88f85bcc359a1a99fb845a77f5d896dbe8b506b45a"
AFTER
"9c133f67397ab4b90ce1275edc09a7e6d05900236209bc72e8f113b9f0cde287"

changed /files/scripts~1workbench_target_state.py/size

BEFORE
1953
AFTER
1920

changed /files/scripts~1workbench_validation.py/sha256

BEFORE
"3cc29fc7a342dc9b55976c37c641c1e7a2abf91625fb9abfb1165a59e251ad29"
AFTER
"11259b8ce1e135c5a86677964f29e6331e65e5fd80a1931c80f7fac507cccb13"

changed /files/scripts~1workbench_validation.py/size

BEFORE
6773
AFTER
6547

changed /files/skills~1assess-patch-risk~1SKILL.md/sha256

BEFORE
"b7337a909fe0ea7f3b203178df60161ea42236405c0bb8697d43ec5736be744b"
AFTER
"c3b62a8c1d6135945a055134f50329047bb908972fc7b320a592edbc3d38b419"

changed /files/skills~1assess-patch-risk~1SKILL.md/size

BEFORE
8679
AFTER
9511

removed /files/skills~1assess-patch-risk~1scripts~1validate_patch_risk_assessment.py

BEFORE
{
  "sha256": "b57a804b1e30c94ed01d5a3a36f8a31b15a6e3b9f751a41c5ade07ff35019d77",
  "size": 6645
}
AFTER
Field is absent

changed /files/skills~1attack-path-analysis~1SKILL.md/sha256

BEFORE
"9f9f45603c68a1e796d8151b3373842aa7e89f0e1dc8e985f7ab1bb342547444"
AFTER
"9465d2750182acbf6dd8f61e60bb47dc1ca502be5cc3f4a71da7ad39935d1eb1"

changed /files/skills~1attack-path-analysis~1SKILL.md/size

BEFORE
8567
AFTER
8568

changed /files/skills~1deep-security-scan~1SKILL.md/sha256

BEFORE
"e3e758d1a6b96b42453fc631b58e04e851cec71318b18d53e2d1c344f6edc4db"
AFTER
"d6aed0d9b47065a1384a96d0a45c843b0cda8ba48e3d2cbe96c65357c6e55ee3"

changed /files/skills~1deep-security-scan~1SKILL.md/size

BEFORE
13815
AFTER
14096

changed /files/skills~1finding-discovery~1SKILL.md/sha256

BEFORE
"1d3a159a5ed83722ddf7369dad9f7788e283454a8ee963cef35ccd8102ea8b0e"
AFTER
"14cc797e750ca4bdd8b060c4cf96d7d32f25b132aa8f80d0a0837683fe010790"

changed /files/skills~1finding-discovery~1SKILL.md/size

BEFORE
25450
AFTER
25598

changed /files/skills~1propose-security-hardening~1references~1proposal-format.md/sha256

BEFORE
"6c0000722629098365afbf6809c3402121f90438600fb574fbc2c77aeb649ba4"
AFTER
"72b93c32f1cbe7d25a3d347d0894e7b642942e68f2d8a3c0409bc398a41b06e7"

changed /files/skills~1propose-security-hardening~1references~1proposal-format.md/size

BEFORE
25476
AFTER
25933

changed /files/skills~1security-diff-scan~1SKILL.md/sha256

BEFORE
"0a4c519ad713585876ea7eb0a8af4b59892c86746f4c69851db9ab347b7fad2f"
AFTER
"f85962d46f141227d794a25253a39232bc4e1ad756509ecd3d8769b85b735136"

changed /files/skills~1security-diff-scan~1SKILL.md/size

BEFORE
5449
AFTER
6102

changed /files/skills~1security-scan~1SKILL.md/sha256

BEFORE
"5b8f5d7debeca14c6b37e8e7ba737671362b8eb4b7f49e693c99c6bd04bc8fa0"
AFTER
"104e2f93fc965c34e91970f517a89e330d5b29dbb243dcea5d95d83f14d135cf"

changed /files/skills~1security-scan~1SKILL.md/size

BEFORE
6975
AFTER
9007

changed /files/skills~1security-scan~1references~1desktop-scan.md/sha256

BEFORE
"fc20c0a72913cf88f99879091c5b64e4161a42670e84bff29b629210006cd860"
AFTER
"62a3b3baac5773c36eb291c74c0304dd97157aff5b89dd56fa8b0fed08803389"

changed /files/skills~1security-scan~1references~1desktop-scan.md/size

BEFORE
4428
AFTER
4747

changed /files/skills~1security-scan~1references~1scan-artifacts-and-ledger.md/sha256

BEFORE
"443084c974eb80747a6dc4e092c7fca55f412ca5ab3f14e2d27dc1223cc690a4"
AFTER
"c95780a7af36fd42716f4c909bb57e68b438769b13f8d6f02ac06ffa73c838ff"

changed /files/skills~1security-scan~1references~1scan-artifacts-and-ledger.md/size

BEFORE
13628
AFTER
14716

changed /files/skills~1threat-model~1SKILL.md/sha256

BEFORE
"f45f02d9f607ec6797b730c71b15310f971403193cc56a984a1cbb1710b495ee"
AFTER
"42568e50c787c4c0bfb9495ad67e72ab6c1a951bb910ecba2c67cff8961c4d56"

changed /files/skills~1threat-model~1SKILL.md/size

BEFORE
3149
AFTER
3606

changed /files/skills~1track-findings~1SKILL.md/sha256

BEFORE
"8e3726e86ef0df509f1a635961f268e1bf04a4622a83e21c1d079f546cc61dcb"
AFTER
"a6d2f30e6d5ca7bd9d74d83017f2f5481c5829585941208a1673b82c683d292b"

changed /files/skills~1track-findings~1SKILL.md/size

BEFORE
20543
AFTER
11371

changed /files/skills~1track-findings~1references~1github-security-advisories.md/sha256

BEFORE
"f56010d265d0ce56e555dd73a92777a6d3be8f5d31bd2af7ff163423a667d10e"
AFTER
"5e583aa2f77db32e4983b8b4bb857b1c7eaebfa1f43fc833b551c96acab70d4e"

changed /files/skills~1track-findings~1references~1github-security-advisories.md/size

BEFORE
4065
AFTER
3288

changed /files/skills~1track-findings~1references~1jira.md/sha256

BEFORE
"05affbdefbfd8054d08f16e5fe15729ade440b5627a4561f8693bd97fb3a3ea2"
AFTER
"bb1f7bb6fa638f20f1caad35b04482ae33f0cdbf2ab9c617e7805575dff457a0"

changed /files/skills~1track-findings~1references~1jira.md/size

BEFORE
5995
AFTER
3027

changed /files/skills~1triage-finding~1SKILL.md/sha256

BEFORE
"70b0e771f286443ea32bbf466ad378b36f9123b4aa171ab02c6680fdbdb704f9"
AFTER
"83081950bd4b29ff37cf82d137aec164532ae56b03dbaad3f4dd1d5423e758a7"

changed /files/skills~1triage-finding~1SKILL.md/size

BEFORE
27559
AFTER
10004

changed /files/skills~1triage-finding~1agents~1openai.yaml/sha256

BEFORE
"1d53cfba14878c05745309eec3f682f70c5e8d49ecc033628cf832a5dd27c9cb"
AFTER
"4a4094210aa6360cf503f5adf7be1e590e27898f3163da1b713632d2828e8563"

changed /files/skills~1triage-finding~1agents~1openai.yaml/size

BEFORE
770
AFTER
400

changed /files/skills~1triage-finding~1references~1ticket-intake.md/sha256

BEFORE
"bd545655e0402f5f326f34191a67b6dd30c382914e9ae81b2e66ad745860e78a"
AFTER
"693b415fdfcdcf8e6d5539677ff89c79bb36995ae22916d87866ce2c25113439"

changed /files/skills~1triage-finding~1references~1ticket-intake.md/size

BEFORE
6250
AFTER
3645

changed /files/skills~1triage-finding~1references~1triage-result-contract.md/sha256

BEFORE
"321027c102cf36119376ef86f0701a4a7c6fc22e46d28fd240639aae156b134a"
AFTER
"709c1d803c001a47c884ba10ac97f8c1434c3ce06a75033778343a662b25729b"

changed /files/skills~1triage-finding~1references~1triage-result-contract.md/size

BEFORE
4411
AFTER
4447
Full snapshot data
{
  "files": {
    ".app.json": {
      "sha256": "a7bbe314059c7311e169474823e3978f267e560c3e961ba49fb94032da9843fe",
      "size": 479
    },
    ".codex-plugin/plugin.json": {
      "sha256": "527d1a0db286884729572d400b0ad9b0ff852d4a12b36228ff5fbef180f7de9d",
      "size": 1582
    },
    ".mcp.json": {
      "sha256": "7c5968060f6e848859ce02450d6e02e67029d8d39011bbda1059b19de6309ebf",
      "size": 1679
    },
    "OWNERS": {
      "sha256": "49be76d15302e4f158b3ef907e9802a955ab9c0a59a039827eab4cb6221f0e5f",
      "size": 41
    },
    "assets/logo.png": {
      "sha256": "9b9c2b09b2fa064611fb62307d321d5c2ea70cf0789f7ce34cdb0fc0d9190b3a",
      "size": 99567
    },
    "examples/completed-scan/coverage.json": {
      "sha256": "d55b9b98d48323b4659dfee6531ec83ec538f2084325412b7188bf85ad68b01b",
      "size": 467
    },
    "examples/completed-scan/findings.json": {
      "sha256": "a6dc4521d6478828224fbafc33585401a47bfeb0e56e07b5d2886e8a29937f2f",
      "size": 1844
    },
    "examples/completed-scan/report.md": {
      "sha256": "83b7c709c0b49d1500b52e61a88ea70b8423ebebec38308b1294cf094838b66f",
      "size": 4116
    },
    "examples/completed-scan/scan-manifest.json": {
      "sha256": "d245ae9fc62a676293c6821e562d1a2d7d59db12d5b8dc99b85f7c5f1462fe00",
      "size": 1245
    },
    "integrity.json": {
      "sha256": "6b342df66fb9b5ce7fc8c9de0e974b59d21340cdc06167df46d1a19bd4ea9441",
      "size": 17465
    },
    "mcp/helpers.mjs": {
      "sha256": "c272f3761e5c405619b26e4d0fd621df5ac189f2ee1bb32b975480e9835f9ca8",
      "size": 1097
    },
    "mcp/helpers.mjs.br.part-000": {
      "sha256": "6299f73c92c4f924bffc6b1bed001480603473967006b3e75941bc49a21f18d5",
      "size": 63398
    },
    "mcp/native/COPYRIGHT-library.html": {
      "sha256": "0a65bb747c49c7bb816cbc7188319bd6e4e8d08091c1190b8a3c0971c47968ed",
      "size": 279302
    },
    "mcp/native/THIRD_PARTY_NOTICES.txt": {
      "sha256": "16ac63908855f5bb7eab864923cc1855b406bd7051dfcd70d7e69684f6c69955",
      "size": 308404
    },
    "mcp/native/darwin-arm64/unix.node": {
      "sha256": "093e87d8de3d2676fc9a2a1430f571bf4fc970b2bbef4c7ded0bf8924e45f473",
      "size": 354352
    },
    "mcp/native/darwin-x64/unix.node": {
      "sha256": "57c45d212d35ce7599afc7b9b21693e18443753231bad1fb5146a4e224db68ec",
      "size": 343296
    },
    "mcp/native/licenses/Apache-2.0.txt": {
      "sha256": "074e6e32c86a4c0ef8b3ed25b721ca23aca83df277cd88106ef7177c354615ff",
      "size": 10280
    },
    "mcp/native/licenses/BSD-2-Clause.txt": {
      "sha256": "f32fb3b417a194167cfad068223fc975ba96c5960513a10f66a3c28720aec1df",
      "size": 1267
    },
    "mcp/native/licenses/MIT.txt": {
      "sha256": "b85dcd3e453d05982552c52b5fc9e0bdd6d23c6f8e844b984a88af32570b0cc0",
      "size": 1078
    },
    "mcp/native/licenses/Unicode-3.0.txt": {
      "sha256": "f5062c9a188d81dfe66b56db4182dcf9e4b17c0d9b0d311a8e20b3a1b075c443",
      "size": 1995
    },
    "mcp/native/linux-arm64-gnu/unix.node": {
      "sha256": "6b352aaaac21f9ad9b772481429ba7bc8433a0e44ca5ffe433ad47289c3007f6",
      "size": 465088
    },
    "mcp/native/linux-arm64-musl/unix.node": {
      "sha256": "3a55ec4f42202c58a29654701c31a8deab386969d14e2ab85f23e81345b4fedb",
      "size": 332456
    },
    "mcp/native/linux-x64-gnu/unix.node": {
      "sha256": "ed2061078400010852a9f8d3ecdf7bc0a008d13adc9e9d5c6954f5cb686a2a2a",
      "size": 365352
    },
    "mcp/native/linux-x64-musl/unix.node": {
      "sha256": "c2e4c07ac6dde175464c6315937652465b200e5f28590898663523beaf4e9ab6",
      "size": 369304
    },
    "mcp/native/win32-arm64/windows.node": {
      "sha256": "19f78e88fd8934038201c26b044123bc05db74f5d7065df10a32583ccbcf7a55",
      "size": 419840
    },
    "mcp/native/win32-x64/windows.node": {
      "sha256": "5aed21edb5fe06efac49d9bd3899d6242f60b1bfac2b710b967a76c924d98298",
      "size": 453120
    },
    "mcp/server.mjs": {
      "sha256": "c58624aa4c4bd3efbb67601c9c2e98759f167f608320a6cd342814b2f2e6a636",
      "size": 1096
    },
    "mcp/server.mjs.br.part-000": {
      "sha256": "7ef9c7387b405b51e2aec793a86696bf793506a8f34155199035aa515b3a415a",
      "size": 140000
    },
    "mcp/server.mjs.br.part-001": {
      "sha256": "94d6412009e284ecbc17bd14d07e0116d8e74e572a62198912ac5a03f95a50c2",
      "size": 126028
    },
    "preflight/capability-profiles.toml": {
      "sha256": "543a0f6a0e81cbbac1fe43e2e3d44d6163a6792384ab9c768ac519295d9ec8a1",
      "size": 2350
    },
    "references/artifact-storage.md": {
      "sha256": "ccce9c76f5d044fbce333d6129fbb55eb63f512c15c2ebeeca405e296f38325b",
      "size": 7632
    },
    "references/config-preflight.md": {
      "sha256": "5894f9fd7efcae7034404a2c062ee3d7417520753be16ddcdb3acf5b884f048d",
      "size": 19162
    },
    "references/core-scan.md": {
      "sha256": "9c0eca53147383a89cd345eac7791ea75b954f7f083448ef25019d8f9ba30afe",
      "size": 22978
    },
    "references/desktop-config-preflight.md": {
      "sha256": "d03e7c604a0459509a4a3238289c3ad0725811e8b11fb7d0044ce8bcee6a7a26",
      "size": 1587
    },
    "references/final-report.md": {
      "sha256": "9c34375584c8ae76959b0eae038b86b2b8ed7874517c249fcae8715314c76298",
      "size": 29931
    },
    "references/finding-detail-fields.md": {
      "sha256": "9e4dcc5633ca1f31291688606e4ec0d56067ed485e748ac9e7d433984f9ab451",
      "size": 11920
    },
    "references/sarif-adapter.md": {
      "sha256": "32725cc851d998c9b33f0232c435d720383c86bc13526b04d356b85d08101cc5",
      "size": 2341
    },
    "references/scan-artifacts.md": {
      "sha256": "eecdccac30b8ad65bb702dc9ac8d9718dcb0b95532a94a61195268d22bdf504b",
      "size": 11243
    },
    "references/scan-contract.md": {
      "sha256": "b362636c29d1e8b18053481abe2f97d7bb099a97040f5b63aa2702a41c1d62c8",
      "size": 14537
    },
    "references/scan-prologue.md": {
      "sha256": "1d23ab6db651134b54307cdea873ffa711a83458bda563f1e126f35e83b278e9",
      "size": 4812
    },
    "references/security-guidance.md": {
      "sha256": "a0f49ad3bd09fa6180a100d81326b75bf87a2d49893ca9e37b64ab151c759a80",
      "size": 1801
    },
    "references/static-finding-assessment.md": {
      "sha256": "78de933caef1c8d971dab83fbb71877602a1197a52eaa7a59d6ff7bc399d0bc7",
      "size": 3949
    },
    "references/threat-model.md": {
      "sha256": "f3dd2d05d7f0c61b13d29a78e810b367772fe22d5ac58adbbc00080a9495706e",
      "size": 15203
    },
    "schemas/coverage.schema.json": {
      "sha256": "6ac14e659e884e9582d8bd9ba480f6364ca17309e1a3dee9469ab025a3380b11",
      "size": 5198
    },
    "schemas/definitions/artifact-common.schema.json": {
      "sha256": "8187236867a2397515571d937deac92dcbf23d3db5e330d32b1f24aced4b9abc",
      "size": 1065
    },
    "schemas/definitions/discovery-candidate.schema.json": {
      "sha256": "b0cf54fc1ae1947db0f6a6f73e17d1124d528226de763fb89489d05fd612331b",
      "size": 2951
    },
    "schemas/findings.schema.json": {
      "sha256": "a480337cc0fa4c48c44fc7be17c6c4348767815570775cda80f2aaf797b8e56c",
      "size": 19167
    },
    "schemas/patch-risk-assessment.schema.json": {
      "sha256": "536492481c5b67910ce8d3754d61c7d5a44c5cb78fe3f081e8f5d1620d6ae9c9",
      "size": 6854
    },
    "schemas/scan-manifest.schema.json": {
      "sha256": "c621d4136ac81741ac8da1960c7f5e92ade22c0b5490e378ea4339b09e45b6f3",
      "size": 9513
    },
    "schemas/tools/candidate-attack-paths.schema.json": {
      "sha256": "f6fcb643b4b975466c4717356a0768b0572812cd832578d8714557f5e3d16935",
      "size": 6055
    },
    "schemas/tools/candidate-validations.schema.json": {
      "sha256": "c871eb3462b7873c1774e6aade62acdd570636e43c0ac3c7b41b7041ca5627e9",
      "size": 4916
    },
    "schemas/tools/deep-reducer.schema.json": {
      "sha256": "5f0c25f826445251415986097c41127018d19b6c690cd99720fd9365893b0028",
      "size": 2221
    },
    "schemas/tools/discovery-candidates.schema.json": {
      "sha256": "dcd2031d64015c69b415c66e57d6e90cbdef91152a445a6f409c14d80153afa6",
      "size": 2473
    },
    "schemas/tools/review-items.schema.json": {
      "sha256": "acc4f4909446a62811728dd1d6581456053da8d26f774b7af208a1856f86ac5b",
      "size": 2250
    },
    "schemas/tools/scan-draft.schema.json": {
      "sha256": "151f9dffc83e1c5b4f0a7fba20b90fb3196fdaa9719180eb0009ba2b50f75d48",
      "size": 23475
    },
    "schemas/tools/worker-threat-model.schema.json": {
      "sha256": "a00f875918794661316a033bd2d03426d61ab1e41d4a36c548c07525dcfde478",
      "size": 435
    },
    "scripts/config_preflight.py": {
      "sha256": "f4d4103650977d078b71f49da6b1e287b6db2f2b7b5fb08e943722a6d869354e",
      "size": 35176
    },
    "scripts/deep_scan_config.py": {
      "sha256": "44229bc7b2e7f4c7654e2e9ed91650a28630eeb00fcc38358f19d69739771f8c",
      "size": 5042
    },
    "scripts/deep_scan_defaults.json": {
      "sha256": "89bdb96ff721f0f1d509f3c5c83f5fc89022f14406d0a84df781b7e0e42cde66",
      "size": 143
    },
    "scripts/deep_scan_workbench.py": {
      "sha256": "5012b337503f44e086fbf021be9db8340f8ba992fe5169c5534752e900947cf5",
      "size": 84709
    },
    "scripts/filesystem_identity.py": {
      "sha256": "5298f2012b6e48ab1106837a5440ef2b3966383e2321507a47593010bb4dd01f",
      "size": 893
    },
    "scripts/finalize_scan_contract.py": {
      "sha256": "3fa92d8e2ccadb032cf458f0fde444785e8ee5ced0abe6346c285b07ef153e27",
      "size": 133770
    },
    "scripts/finding_preview.py": {
      "sha256": "ebdf8e7b7e465c0937e73e945e3593d659b2f15ff1db08d0b4a2d3b106174c4d",
      "size": 16089
    },
    "scripts/generate_in_scope_files.py": {
      "sha256": "0b420d786b17e4f91451b5b686fdb4d6beee3913eebb952f8fcbf220aec6230e",
      "size": 11646
    },
    "scripts/generate_rank_input.py": {
      "sha256": "e7c0bddbdb7e9236f7431d84b86be4c3fc202daa8d1306d6baa930110635b671",
      "size": 17899
    },
    "scripts/launch_codex_security_mcp": {
      "sha256": "56794e736a1e8f588f9959a2e707ea3ed9bc7d4d2b796c132e91d5fbed59e600",
      "size": 1793
    },
    "scripts/launch_codex_security_mcp.cmd": {
      "sha256": "2539c0914bb130d76629e8176ac93762cd0051677ac2c525e7ba524b0b828f80",
      "size": 2582
    },
    "scripts/rank_preview.py": {
      "sha256": "627d0b89c9d4436162ab9bcb80f7aa562605695e784dc612307c7eda6fef3a7f",
      "size": 34726
    },
    "scripts/report_projection.py": {
      "sha256": "1b24978a3cdb3c336ac27a2b39fb35457bade13a4aad0782710fe38ac39965cf",
      "size": 41098
    },
    "scripts/reserved_artifact_paths.json": {
      "sha256": "58ba1cf42437ac3af65c85a66eeff46f22572e45081fa2620f4b241173efcc50",
      "size": 186
    },
    "scripts/snapshot_sqlite.py": {
      "sha256": "9e0be851702f0962070ece6e0e2959e3955fc99126f68452d175fc22bc38423b",
      "size": 1084
    },
    "scripts/threat_model_projection.py": {
      "sha256": "32e4d5cd370a49cdc5658c3ded3d4d63ba7f41a44b34b67da87321048d088111",
      "size": 6711
    },
    "scripts/validate_scan_contract.py": {
      "sha256": "38a5eb0126ea06b22eb82c5829e4ffcbebd2c1e55f99634454622fedd7b9e1a0",
      "size": 3803
    },
    "scripts/validate_tracking_source.py": {
      "sha256": "802fb3062456128c7adceb6048183811120255b222018e123e10c5ba0caa4bdc",
      "size": 2813
    },
    "scripts/windows_scan_local_files.py": {
      "sha256": "c26276695435d134c1354048c3c74c3c6b0ed203158a93b63b67ef0b6bfab843",
      "size": 24919
    },
    "scripts/workbench/__init__.py": {
      "sha256": "3635fffd60f51d5a5d889e20c91df803c667f8b1b29cbcf68c96cb2e0a9c33ed",
      "size": 58
    },
    "scripts/workbench/handoff.py": {
      "sha256": "83606054cc47064514a612d8ce16353cce669fe07b61852d73bc0c94b75c8ee5",
      "size": 8914
    },
    "scripts/workbench/storage.py": {
      "sha256": "5e389073520fb7668defd433228befd9e7b9c8309c1b6024bffd6213d59f1d88",
      "size": 973
    },
    "scripts/workbench_cli.py": {
      "sha256": "959e951fa5daf326049ee61bd0773999be92600b65a9062e56b4f62fc4e2aa55",
      "size": 21260
    },
    "scripts/workbench_constants.py": {
      "sha256": "0ff12b11b2ae9f71c1de6cff0afc234b035379bb1193f1ca9a56ddeb7aa32cf7",
      "size": 2187
    },
    "scripts/workbench_dashboard.py": {
      "sha256": "5770b77ff551cde46c22fae9239ef8ce28254320da77876e0b936dc35b829967",
      "size": 5990
    },
    "scripts/workbench_db.py": {
      "sha256": "94bf11d7d74202ae7efbdd4f70a036393d4ba013ffc2ada44172a59be41f97f2",
      "size": 146186
    },
    "scripts/workbench_feedback.py": {
      "sha256": "675bc5897444a39950297f74353fa6fd296f73d3a5ac87d294647ae8425151dd",
      "size": 4120
    },
    "scripts/workbench_finding_index.py": {
      "sha256": "4618f994786fa2300e78592fa2868bc0a585368127027c1940a0e504b0254265",
      "size": 3938
    },
    "scripts/workbench_finding_workflows.py": {
      "sha256": "de44bfc28c0a4d2021643a50d5a42408f4853bb4a21cf9d1f4ffb43a695b06ce",
      "size": 8754
    },
    "scripts/workbench_findings.py": {
      "sha256": "b78e2ca68f29cf002b6215985225e1b3996c8edd08601569945405d42c33b301",
      "size": 8881
    },
    "scripts/workbench_native_indexes.py": {
      "sha256": "114dbf1e4050302948c4b8f24d69454f127d128e3bc35e34a5f3ec9dd3b187cd",
      "size": 9870
    },
    "scripts/workbench_progress.py": {
      "sha256": "42c7d0b8b4d253095e1062922cd9e59b10b966ac314bef092cb78cad2217b967",
      "size": 13296
    },
    "scripts/workbench_publication.py": {
      "sha256": "9312a2962b797ed355d6b05fb375da6325aeb5c5ead5d52f2fb7114ef3ad9635",
      "size": 20346
    },
    "scripts/workbench_remediation.py": {
      "sha256": "96585805c4956917bb473c3b60493a3c15daa2028b074b756e36358a9ac76525",
      "size": 7281
    },
    "scripts/workbench_saved_results.py": {
      "sha256": "436b23a4d169006437985bb352bfd792da9e465c4c7506dce31bfd5e78524c6d",
      "size": 119202
    },
    "scripts/workbench_scan_history.py": {
      "sha256": "920a4c6448c4ee87500e4488fdfa5a294dfa0696f94f55f2e2cbe544e5acf60f",
      "size": 48177
    },
    "scripts/workbench_scan_start.py": {
      "sha256": "647e54ce40a7dc5b17d6abe547406f22ca0cb4eee628938b4c21629eb8e73c35",
      "size": 7963
    },
    "scripts/workbench_scan_usage.py": {
      "sha256": "21d845f8967c9206351e54f94fd2b4bbfe834434e35b642992d7a829b76cd94e",
      "size": 22094
    },
    "scripts/workbench_schema.py": {
      "sha256": "25ef8550ded14785fa47b19f1fa358422d8883affc94641c84e68c172e800cc0",
      "size": 51783
    },
    "scripts/workbench_severity.py": {
      "sha256": "ec74f540595e8052e295846303f31988329e0dc68fcebdd92572673555b1c99d",
      "size": 4625
    },
    "scripts/workbench_source_excerpt.py": {
      "sha256": "5681d4a5c547404f687c644f54432c10e0770b6ba4c1e6be321664579a252a24",
      "size": 3210
    },
    "scripts/workbench_target.py": {
      "sha256": "08ed149295b9347ac37f2b8523c822a35f165283422c7644dabecfa236b81b72",
      "size": 32451
    },
    "scripts/workbench_target_state.py": {
      "sha256": "9c133f67397ab4b90ce1275edc09a7e6d05900236209bc72e8f113b9f0cde287",
      "size": 1920
    },
    "scripts/workbench_validation.py": {
      "sha256": "11259b8ce1e135c5a86677964f29e6331e65e5fd80a1931c80f7fac507cccb13",
      "size": 6547
    },
    "skills/assess-patch-risk/SKILL.md": {
      "sha256": "c3b62a8c1d6135945a055134f50329047bb908972fc7b320a592edbc3d38b419",
      "size": 9511
    },
    "skills/assess-patch-risk/agents/openai.yaml": {
      "sha256": "fec61f321e18022579cac25ffb33286f48cc316172a0b8d502f2bf4faecba025",
      "size": 274
    },
    "skills/assess-patch-risk/references/risk-rubric.md": {
      "sha256": "078a71175191580791685808980cb1815dc97265cfee8c0ddad1f4d3b8203b4a",
      "size": 5049
    },
    "skills/attack-path-analysis/SKILL.md": {
      "sha256": "9465d2750182acbf6dd8f61e60bb47dc1ca502be5cc3f4a71da7ad39935d1eb1",
      "size": 8568
    },
    "skills/attack-path-analysis/agents/openai.yaml": {
      "sha256": "d9355cbcf0bc81098c9e837d9d4e8644e598410d052a862ab11cf91ef9ccb633",
      "size": 261
    },
    "skills/attack-path-analysis/references/attack-path-facts.md": {
      "sha256": "8c8f1abb46ddf045d76908df78e3a273da8d61aaa0f37fc992534a3ddfe42430",
      "size": 2882
    },
    "skills/attack-path-analysis/references/severity-policy.md": {
      "sha256": "44719bb96a1065df7683a4f7968145efd3b3f365ec95c22a4bed5b20b5d8a0a1",
      "size": 15288
    },
    "skills/deep-security-scan/SKILL.md": {
      "sha256": "d6aed0d9b47065a1384a96d0a45c843b0cda8ba48e3d2cbe96c65357c6e55ee3",
      "size": 14096
    },
    "skills/deep-security-scan/agents/openai.yaml": {
      "sha256": "3f8d781bf372b0d053a017eabaebf947d5d48d9be2b82cb67da211128924c3f1",
      "size": 192
    },
    "skills/define-security-policy/SKILL.md": {
      "sha256": "2817e1a03980a7ebea478c8d9e6c622e3c6205123e767a1e32f0204c06729cc7",
      "size": 6256
    },
    "skills/define-security-policy/agents/openai.yaml": {
      "sha256": "8c40b0f8bd1eb7feabdcea69f12c2a7d18e492e96893c0702507ffd808b8e2b4",
      "size": 210
    },
    "skills/finding-discovery/SKILL.md": {
      "sha256": "14cc797e750ca4bdd8b060c4cf96d7d32f25b132aa8f80d0a0837683fe010790",
      "size": 25598
    },
    "skills/finding-discovery/agents/openai.yaml": {
      "sha256": "c044dd83a7624b90ed19f11adc899202685ce64e32502f1d46225f69f9a2c962",
      "size": 220
    },
    "skills/fix-finding/SKILL.md": {
      "sha256": "ba7311f43b2c0742da0d5c6bdb2f0b26601c09cc59747cf8c62a09f8d0bb86d2",
      "size": 9477
    },
    "skills/fix-finding/agents/openai.yaml": {
      "sha256": "5dac397bf3a17e45283691b656179eb56d19e34881af380f098d7c455bce52d7",
      "size": 225
    },
    "skills/propose-security-hardening/SKILL.md": {
      "sha256": "ad07d88da7c2bc9e551849cdde686b0daad380ed0aac798e6c06444681d75959",
      "size": 22791
    },
    "skills/propose-security-hardening/agents/openai.yaml": {
      "sha256": "1bcab19d48eb4b768c0dc435bd2e738f1471c2345cce5865bb31bdca5be0b134",
      "size": 293
    },
    "skills/propose-security-hardening/references/proposal-format.md": {
      "sha256": "72b93c32f1cbe7d25a3d347d0894e7b642942e68f2d8a3c0409bc398a41b06e7",
      "size": 25933
    },
    "skills/security-diff-scan/SKILL.md": {
      "sha256": "f85962d46f141227d794a25253a39232bc4e1ad756509ecd3d8769b85b735136",
      "size": 6102
    },
    "skills/security-diff-scan/agents/openai.yaml": {
      "sha256": "f3d31e09befbb8532b53fdccb63a34c0b894a7fb96215b40e84647cd9f8e1b50",
      "size": 284
    },
    "skills/security-scan/SKILL.md": {
      "sha256": "104e2f93fc965c34e91970f517a89e330d5b29dbb243dcea5d95d83f14d135cf",
      "size": 9007
    },
    "skills/security-scan/agents/openai.yaml": {
      "sha256": "5952ae0b0f7d378b7e6ab3fe793335a0e26e5d15bd2d7fdd14ecdd795607ceb6",
      "size": 271
    },
    "skills/security-scan/references/desktop-scan.md": {
      "sha256": "62a3b3baac5773c36eb291c74c0304dd97157aff5b89dd56fa8b0fed08803389",
      "size": 4747
    },
    "skills/security-scan/references/scan-artifacts-and-ledger.md": {
      "sha256": "c95780a7af36fd42716f4c909bb57e68b438769b13f8d6f02ac06ffa73c838ff",
      "size": 14716
    },
    "skills/threat-model/SKILL.md": {
      "sha256": "42568e50c787c4c0bfb9495ad67e72ab6c1a951bb910ecba2c67cff8961c4d56",
      "size": 3606
    },
    "skills/threat-model/agents/openai.yaml": {
      "sha256": "a3533478c2548248ef07c9afbbe0a7451f1fa1882883b4def0906d8113b7dd6c",
      "size": 171
    },
    "skills/track-findings/SKILL.md": {
      "sha256": "a6d2f30e6d5ca7bd9d74d83017f2f5481c5829585941208a1673b82c683d292b",
      "size": 11371
    },
    "skills/track-findings/agents/openai.yaml": {
      "sha256": "39e73c0003afc8bd9d3cf53c027d8274e724dc41f46e3cd6863ad34bb4de4200",
      "size": 279
    },
    "skills/track-findings/references/github-security-advisories.md": {
      "sha256": "5e583aa2f77db32e4983b8b4bb857b1c7eaebfa1f43fc833b551c96acab70d4e",
      "size": 3288
    },
    "skills/track-findings/references/jira.md": {
      "sha256": "bb1f7bb6fa638f20f1caad35b04482ae33f0cdbf2ab9c617e7805575dff457a0",
      "size": 3027
    },
    "skills/triage-finding/SKILL.md": {
      "sha256": "83081950bd4b29ff37cf82d137aec164532ae56b03dbaad3f4dd1d5423e758a7",
      "size": 10004
    },
    "skills/triage-finding/agents/openai.yaml": {
      "sha256": "4a4094210aa6360cf503f5adf7be1e590e27898f3163da1b713632d2828e8563",
      "size": 400
    },
    "skills/triage-finding/references/github-rest-intake.md": {
      "sha256": "f026bef041ca92f3d9b47a131794aa54e98cf8d7716fae3f71ab53e8ab09c79f",
      "size": 9314
    },
    "skills/triage-finding/references/ticket-intake.md": {
      "sha256": "693b415fdfcdcf8e6d5539677ff89c79bb36995ae22916d87866ce2c25113439",
      "size": 3645
    },
    "skills/triage-finding/references/triage-result-contract.md": {
      "sha256": "709c1d803c001a47c884ba10ac97f8c1434c3ce06a75033778343a662b25729b",
      "size": 4447
    },
    "skills/validation/SKILL.md": {
      "sha256": "3c4660f79b12a92728e6bb25027064c3a911d0960d39aeafc8fda9e42ce517a5",
      "size": 12845
    },
    "skills/validation/agents/openai.yaml": {
      "sha256": "7516bcd4748b55566694284d7d953a7db0c94d5a2123895fabb36d7d9d7d74e4",
      "size": 183
    },
    "skills/validation/references/validation-guidance.md": {
      "sha256": "42f7a9d85b78d0deb5e6eda82b8c59ed101c40d36065833b9cf39fe50699e255",
      "size": 26823
    },
    "skills/verify-fix/SKILL.md": {
      "sha256": "3d4530484c7e4c18b6afe7c6527247e96517dce1ebd1bda9d349cd367ecb0ae3",
      "size": 3025
    },
    "skills/verify-fix/agents/openai.yaml": {
      "sha256": "ac35fc4704cde35b6bf103e16a16d0a44f2b9c2671e1634292cf285905cf40f3",
      "size": 235
    },
    "skills/vulnerability-writeup/SKILL.md": {
      "sha256": "d08582d9963ce3bfbc3fe81b6e85a01e6fe306713d7951bfd8dd2fbc3df75de4",
      "size": 27640
    },
    "skills/vulnerability-writeup/agents/openai.yaml": {
      "sha256": "7987566daac59e3dd6c5211fe020f71fc4c862843c231d10c28a45697d680f9e",
      "size": 290
    },
    "skills/vulnerability-writeup/references/report-format.md": {
      "sha256": "60568466f7057562d7359dc3a396632c760c147582603896d7e569a77487d0b1",
      "size": 14682
    }
  }
}

SHA-256 of public snapshot: 8e8a2a0d24309bd11d1c54794bd1027470e5f7bc759784322ed68d7643d69ec8