Skip to content

fix: use patched Python and frozen scanner certificate trust - #4061

Merged
joshavant merged 3 commits into
mainfrom
fix/frozen-scanner-ca-20261026
Oct 26, 2026
Merged

joshavant merged 3 commits into
mainfrom
fix/frozen-scanner-ca-20261026

Conversation

@joshavant

@joshavant joshavant commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

What Problem This Solves

Use released CPython 3.12.16 in the existing security workers, prevent uv from selecting another installed interpreter, and consume the merged ClawScan #94 source with its frozen SkillSpector certifi 2026.10.23 fix.

User Impact

Existing worker entry points retain their scanner/model policy and fail-closed checks. Legitimate private-CA HTTPS remains usable; historical explicit roots cannot restore the incident keys under the qualified patched runtime. This PR establishes source/installation readiness, not deployed-worker delivery.

Why This Change Was Made

The immutable source pin is now merged ClawScan revision 022143b39b3285d1ac24cce7fbb61c36f5207935. The prior provisional pin f35fb2679e1362ba99fa2768176513c7bd696ab6 already contained the identical certificate-lock repair; an exact endpoint diff shows only the producer changelog changed during landing. The spec now accurately describes ClawScan's frozen lock ownership. No second adapter implementation, runtime-support widening, workflow trigger or deployment permission changes.

The existing interpreter repair binds uv sync --locked --no-dev --python <sys.executable> to setup-python's selected patched runtime. Its native macOS failure-before/pass-after and both-scanner-order regression proof remain applicable.

Evidence

Final candidate: b71ec9fddac3d73d2d5e9b170d07ed22a76ef97f.

  • Fresh actual baseline and candidate shell installers fetched their exact producer commits and built ClawScan with Go 1.27.3. The candidate binary reports vcs.revision=022143b39b3285d1ac24cce7fbb61c36f5207935, vcs.modified=false; CLI help/static scan pass.
  • Both actual frozen SkillSpector installs selected CPython 3.12.16 and certifi 2026.10.23; 24 real adapter tests, dependency checks and CLI help pass. The final upstream-owned lock and installed certificate bundle identities are recorded in the linked validation comment.
  • Rebuilt installed SkillSpector's actual configured Responses provider: 33 TLS cases pass. All 14 live incident controls first verify the chain, hostname and a known incident SPKI. All 14 historical-explicit-root product requests then fail with certificate rejected. Default-root failures are recorded separately and are not counted as key-rejection proof. Legitimate private-CA Responses succeeds before and after those failures, including a bundle containing historical roots.
  • Required bun run ci:static and all 8 focused installer/workflow tests pass with Bun 1.4.4. Independent P0–P3 review of this adoption is scoped-clean.
  • Prior real-model benign/malicious scanner/judge wiring and native macOS AIG installation (259 owning adapter tests) are reused: producer runtime source, both patches, scanner pins, installer and AIG lock are byte-identical. The fresh extra Linux ARM64 AIG attempt fails closed on an unlisted platform wheel hash on both base and candidate; this is outside the configured AMD64 CI target and the lock's admitted macOS acceptance target. No hash relaxation is proposed.
  • Historical broad local unit proof had one inherited intermittent Convex artwork failure, reproduced on base and candidate at the same assertion; it is not relabeled green. Final-head hosted checks are the authoritative current CI results.

ClawScan #94 is merged; the producer-first blocker is closed. Current-head @openclaw/openclaw-secops approval remains required by repository governance. ClawSweeper re-review is requested after this body and the detailed proof are current. Check the actual subsequent review and final-head checks before landing. No merge/auto-merge, production publication or manual deployment was performed.

Closeout, 2026-10-26: ClawSweeper's actual subsequent review covers exact head b71ec9fddac3d73d2d5e9b170d07ed22a76ef97f, reports zero findings, and resolves the producer-first blocker. All 37 reported final-head checks settled (31 successful, 6 skipped); GitHub reports MERGEABLE/CLEAN. The only remaining merge blocker is current-head openclaw/openclaw-secops approval. Its request remains outstanding; no approval gate was waived.

An additional actual-provider default-store HTTPS control reached https://api.openai.com/v1 and returned the expected HTTP401 for an inert synthetic credential, with no certificate failure. This establishes legitimate public TLS admission, not a successful authenticated model call. Task-owned fixture listeners are stopped; the UTM guest is gracefully powered off with evidence/installations retained. No merge or auto-merge.

@joshavant
joshavant requested a review from a team as a code owner October 26, 2026 05:56
@clawsweeper

clawsweeper Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

ClawSweeper review complete

ClawSweeper finished reviewing this revision. The review result is being finalized.

View the workflow run.

@vercel

vercel Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
clawhub Ready Ready Preview Oct 26, 2026 6:57pm UTC

Request Review

@clawsweeper clawsweeper Bot added clawsweeper:intake:bug Preliminary submission classification; full source review pending. clawsweeper:intake:needs-repro Preliminary submission classification; full source review pending. labels Oct 26, 2026
@clawsweeper clawsweeper Bot added P2 Normal backlog priority with limited blast radius. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on maintainer Only explicit maintainer approvals or decisions remain; merge is still blocked. and removed clawsweeper:intake:bug Preliminary submission classification; full source review pending. clawsweeper:intake:needs-repro Preliminary submission classification; full source review pending. labels Oct 26, 2026
@clawsweeper

clawsweeper Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Codex review: blocked before merge.

What this changes

This PR pins Python 3.12.16, binds SkillSpector installation to the selected interpreter, and adopts ClawScan’s merged frozen certificate-bundle repair.

Example: SkillSpector installs on a runner with multiple Python interpreters.

  • Before: uv can select an interpreter other than setup-python’s selection, while the frozen lock retains certifi 2026.6.17.
  • After: uv receives the selected Python executable explicitly and installs certifi 2026.10.23 from the producer-owned lock.

Review scores

Measure Result What it means
Overall readiness 🦞 diamond lobster (5/6) Focused repair with actual installation and provider-transport proof, successful final-head checks, and no actionable findings; required security approval remains independent.
Proof confidence 🦞 diamond lobster (5/6) Sufficient (terminal): Final-head evidence exercises the actual shell installers on native Ubuntu 24.04 ARM64 and the installed SkillSpector Responses provider through real TLS: incident certificates reject with historical explicit roots, while legitimate private-CA calls succeed before and after rejection; unchanged AIG inputs retain the recorded native macOS qualification, and Linux ARM64 AIG remains explicitly unsupported.
Patch quality 🦞 diamond lobster (5/6) No actionable review findings were identified.

Product

Kind: Bug fix · Worth it: Yes · Fix scope: Complete
User problem: Security scanners can retain obsolete certificate trust or run under an interpreter other than the patched runtime selected by the workflow.
Reason: The maintainer-requested direction repairs the existing installation boundary without adding configuration or changing scanner/model policy; deployed-fleet delivery is explicitly outside this PR’s claim.

Merge readiness

⛔ Blocked before merge - 1 item remains

No blocking findings. The previous producer-first blocker is resolved, final-head checks pass, and this PR remains useful; current-head SecOps approval is still required.

Priority: P2
Reviewed head: b71ec9fddac3d73d2d5e9b170d07ed22a76ef97f

Before merge

  • Await maintainer action - Obtain openclaw/openclaw-secops approval for head b71ec9f before landing.

Findings

None.

Agent review details

How this fits together

GitHub security workers install a source-pinned ClawScan CLI and matching Python scanners, then consume scanner evidence for security review and publication checks.

flowchart LR
  A[Worker workflow] --> B[Python 3.12.16]
  A --> C[Pinned ClawScan source]
  C --> D[Shared scanner installer]
  B --> D
  D --> E[Matched scanner environments]
  E --> F[Verified HTTPS provider requests]
  F --> G[Security scan evidence]
Loading

Technical review

Best possible solution:

Land the focused consumer repair after current-head SecOps approval, keeping scanner adapters and certificate-lock ownership in ClawScan.

Do we have a high-confidence way to reproduce the issue?

Current main leaves uv free to choose a different installed interpreter and consumes the older frozen certificate lock; contributor evidence additionally records native interpreter-selection and installed-provider TLS behavior.

Is this the best way to solve the issue?

Best-fix verdict: best within the stated installation scope; updating certifi alone cannot reject explicitly trusted incident keys, and a second ClawHub adapter would duplicate the existing producer owner.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning medium; reviewed against e726f3c5fe4d.

Provenance checked

  • Shared SkillSpector installation keeps the original intent (21841f0: Adopt matching source-pinned Responses adapters and frozen dependencies under the approved security consumer policy.)
  • Worker toolchain and certificate inputs keeps the original intent (5235885: Select reviewed worker toolchains and refresh available trust inputs while retaining existing guards and ownership.)
  • ClawScan source pin keeps the original intent (96d1fb9: Adopt reviewed scanner recovery fixes through an immutable merged producer revision.)

Testing

Proof path: shipped entry point.

Security

None.

Evidence

What I checked:

Likely related people:

  • Josh Avant: Raw commit 5235885 adds scripts/security/install-clawscan-scanners.sh:37 relative to its recorded parents. This identifies author metadata, not feature responsibility or a PR merger. (role: source-line author; confidence: high; commits: 52358852d351; files: scripts/security/install-clawscan-scanners.sh)

Review metrics

Metric Value Why it matters
Patch size +25/-16 across 11 files The change stays focused on runtime selectors, the existing installer, producer adoption, matching tests, and durable intent.

Labels

Label changes:

  • add proof: sufficient: Contributor real behavior proof is sufficient.
  • add rating: 🦞 diamond lobster: Overall readiness is 🦞 diamond lobster; proof is 🦞 diamond lobster and patch quality is 🦞 diamond lobster.
  • remove rating: 🦐 gold shrimp: Current PR rating is rating: 🦞 diamond lobster, so this older rating label is no longer current.

Label justifications:

  • P2: A focused scanner runtime and certificate-trust repair with demonstrated value, without evidence of an urgent current production outage.
  • rating: 🦞 diamond lobster: Overall readiness is 🦞 diamond lobster; proof is 🦞 diamond lobster and patch quality is 🦞 diamond lobster.
  • status: ⏳ waiting on maintainer: Only explicit maintainer approvals or decisions remain; merge is still blocked.
  • proof: sufficient: Contributor real behavior proof is sufficient.

Rating scale

6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior.

Workflow

ClawSweeper edits this one comment on every review. Comment @clawsweeper re-review for a fresh review only. Repair and merge execution lanes are retired.

History

Review history (2 earlier review cycles)
  • reviewed 2026-10-26T06:16:01.288Z sha ec07d01 :: blocked before merge. :: none
  • reviewed 2026-10-26T06:47:56.243Z sha 15a3ead :: blocked before merge. :: none

Reviewed October 26, 2026, 2:59 PM ET / 18:59 UTC (Revision 3).

@joshavant

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

The reviewed interpreter-selection repair and evidence are current at 15a3ead22695f370960dbdccb74f2c9a3b349f5d. Actual native installer and both scanner adapters pass; real-provider matched scanner/judge artifacts passed the actual ClawHub consumer validator. The PR body also records the inherited intermittent artwork transaction failure reproduced at the same boundary on base and candidate. Required owner/security approvals remain enforced.

@clawsweeper

clawsweeper Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

🦞👀
Exact review queued.

Re-review progress:

@clawsweeper clawsweeper Bot added clawsweeper:intake:bug Preliminary submission classification; full source review pending. clawsweeper:intake:needs-repro Preliminary submission classification; full source review pending. labels Oct 26, 2026
@joshavant

joshavant commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor Author

Merged-producer qualification for final head b71ec9fddac3d73d2d5e9b170d07ed22a76ef97f:

The PR now selects ClawScan #94's merged revision 022143b39b3285d1ac24cce7fbb61c36f5207935. Important attribution correction: exact endpoint comparison with provisional f35fb2679e1362ba99fa2768176513c7bd696ab6 changes only CHANGELOG.md. Both endpoints already contain the same frozen certifi fix. A three-dot comparison through their common ancestor is not the endpoint delta.

Actual installation, isolated native Ubuntu 24.04 ARM64 UTM:

go build: go1.27.3; GOOS=linux; GOARCH=arm64
vcs.revision=022143b39b3285d1ac24cce7fbb61c36f5207935
vcs.modified=false
CPython 3.12.16; uv 0.13.5; certifi 2026.10.23
uv sync --locked --no-dev --python <selected interpreter>
24 SkillSpector adapter tests passed
uv pip check: all installed packages compatible
actual scanner --help and ClawScan static-scan entry point: passed
bun run ci:static: passed
focused scanner/workflow contracts: 8 passed
independent P0–P3 review: scoped-clean

SHA256 identities:

Artifact SHA256
Installed ClawScan binary b147cc1a23f3bec027cbfadac08cd82a42603ff6ae52e260627e0d2f6e90ef9e
Patched frozen SkillSpector uv.lock, identical before/after producer adoption 01a07810832fe8d04cfbcc91c53d30a0e7c36ed62730dc05b5a1efc2d8bb3bdf
Installed certifi cacert.pem 2ef52ad56b4803e264045c915e55c236cbfa045b84b81efefc218a19eb44bd2b
ClawScan-owned SkillSpector patch c53bf3170160900fbbfc312efc95deb0320d3d7f5767da49a25266f724405431
ClawScan-owned AIG patch 29fd562a6ad1402cc5d06d028b8b82ad9544c10e2b635fcc8c43c1641f5eac3e

Actual installed SkillSpector provider TLS proof used a synthetic credential and a task-owned HTTPS model fixture, without mocking HTTP transport or verification. The configured model exercised /v1/responses. All 33 scenarios passed their acceptance assertions:

  • Private CA absent: rejects; matching private CA supplied: successful model result; trusted hostname-mismatch control: rejects.
  • 14 live incident endpoints: OpenSSL chain+hostname controls succeeded and the served chains matched verified incident SPKIs (DV/OV/EV G3B/G3C, AAA cross-sign and no-CT variants).
  • All 14 product calls with historical explicit roots fail with SSLCertVerificationError: ... certificate rejected. Matching successful controls prevent treating endpoint outage, unknown issuer or hostname mismatch as revocation proof.
  • All 14 default-root requests also reject. These are bundle-trust results, separately recorded from explicit-key rejection.
  • A subsequent legitimate private-CA model request succeeds; a legitimate request with private and historical roots combined also succeeds. No trust bypass or policy reset.
  • Parsed certifi bundle contains zero occurrences of the verified incident SPKIs.

The extra AIG Linux ARM64 installation attempt fails closed on pydantic-core's unlisted ARM64 wheel hash, identically on old and new heads. Configured workflows target AMD64; the lock also deliberately admits macOS ARM64 acceptance wheels. Existing native macOS AIG installation/259 adapter tests and actual real-model wiring proof remain applicable because all relevant code, patches, lock and pins are identical. No new ARM64-Linux AIG support or fresh AMD64 native qualification is claimed.

Native proof directories and raw logs/hashes are retained in the campaign follow-up clawhub-4061-merged-producer-20261026T184915Z; the consolidated report records failed attempts and reuse rationale. No host trust or production Docker/service state was used.

Producer merge is complete. Secops approval remains outstanding. Final-head CI and the subsequent ClawSweeper review must be assessed separately; this comment does not claim an approval or deployed-fleet delivery.

Closeout, 2026-10-26: ClawSweeper's actual subsequent review covers exact head b71ec9fddac3d73d2d5e9b170d07ed22a76ef97f, reports zero findings, and resolves the producer-first blocker. All 37 reported final-head checks settled (31 successful, 6 skipped); GitHub reports MERGEABLE/CLEAN. The only remaining merge blocker is current-head openclaw/openclaw-secops approval. Its request remains outstanding; no approval gate was waived.

An additional actual-provider default-store HTTPS control reached https://api.openai.com/v1 and returned the expected HTTP401 for an inert synthetic credential, with no certificate failure. This establishes legitimate public TLS admission, not a successful authenticated model call. Task-owned fixture listeners are stopped; the UTM guest is gracefully powered off with evidence/installations retained. No merge or auto-merge.

@joshavant

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Final head: b71ec9fddac3d73d2d5e9b170d07ed22a76ef97f. Branch, PR body and merged-producer installation/TLS evidence are current. ClawScan #94 is merged and its exact merge revision is pinned; secops approval remains independently required. Please assess the final head; no merge or autofix request.

@clawsweeper

clawsweeper Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

🦞👀
Exact review queued.

Re-review progress:

@clawsweeper clawsweeper Bot added proof: sufficient Contributor real behavior proof is sufficient. rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. clawsweeper:intake:bug Preliminary submission classification; full source review pending. clawsweeper:intake:needs-repro Preliminary submission classification; full source review pending. labels Oct 26, 2026
@joshavant
joshavant merged commit 07fa79f into main Oct 26, 2026
61 of 62 checks passed
@joshavant
joshavant deleted the fix/frozen-scanner-ca-20261026 branch October 26, 2026 19:52

This branch was successfully deployed

1 active deployment
Preview – clawhub — b71ec9fd Deployed Oct 26, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P2 Normal backlog priority with limited blast radius. proof: sufficient Contributor real behavior proof is sufficient. rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. status: ⏳ waiting on maintainer Only explicit maintainer approvals or decisions remain; merge is still blocked.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant