🤖 fix: restore the security baseline and CI compatibility - #92
dependabot[bot] wants to merge 2 commits into
Conversation
Bumps [github.com/modelcontextprotocol/go-sdk](https://github.com/modelcontextprotocol/go-sdk) from 1.3.0 to 1.4.1. - [Release notes](https://github.com/modelcontextprotocol/go-sdk/releases) - [Commits](modelcontextprotocol/go-sdk@v1.3.0...v1.4.1) --- updated-dependencies: - dependency-name: github.com/modelcontextprotocol/go-sdk dependency-version: 1.4.1 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com>
Exercise the production transport defaults with fake Kubernetes clients and loopback-only HTTP. Cover hostile Host/origin/content-type inputs, parser key aliases, legitimate SDK calls, and service-host limitations. Document that transport checks are not authentication. PR #92 remains scoped to SDK 1.4.1. Signed-off-by: Thomas Kosiewski <tk@coder.com> --- _Generated with [`xum`](https://github.com/coder/xum) • Model: `coder:openai/gpt-6-astra` • Thinking: `xhigh`_ Change-Id: I03f9419542b9813951e9d7fe06ee2501ca8b0d75
🤖 Exact-head MCP security dogfoodSource: These are actual test-binary executions with fake Kubernetes clients and loopback-only HTTP. The Pod-side local address is modeled. No live cluster, actual port-forward, or browser exploit was exercised. Every rejected/ignored payload must produce zero workspace-tool reads and no state change; a valid follow-up must still work. The service-address examples explicitly show that transport protections are not authentication. The video is an accelerated render of the recorded terminal session, with idle gaps compressed (6.6 seconds). It is not a fresh run during playback. Source, binary hash, command, native-exit and raw terminal receipts are retained privately. Screenshots provide readable views of each step. Accelerated terminal recording: dogfood.webmReadiness remains blocked by vulnerability gates. No code/security review was requested. Generated with |




Summary — scope explicitly reopened
The issue #100 scope decision expands this existing PR into a combined security-baseline and CI-compatibility repair. Integration is in progress; this PR is not review-ready or merge-ready. The current published head remains
fc52a605while integration is validated locally.Keep the original MCP SDK 1.4.1 upgrade, focused transport/parser regressions, and missing-authentication limitations. Add the tested Go 1.26.8 / Coder 2.35.8 Security Support dependency graph, explicit Trivy 0.74.0 inputs at all five existing SHA-pinned action invocations, and a narrowly tested Codex-comment metadata/clean-security-verdict fix. No real finding may be ignored, and summary metadata is not approval.
Why this is one delivery unit
Merge-group runs force the full gates. Toolchain-only, scanner-only, or dependency-only prerequisites would remain red and cannot land independently. The work will use distinct logical commits inside PR #92, not a replacement PR or a red prerequisite stack. Part of #100; that issue must remain open until verification after an authorized landing.
Dependency size and rationale
The frozen graph changes 374 modules: 152 additions, 14 removals, and 208 version changes relative to
fc52a605. It changes 2,320 files, with 305,522 additions and 210,083 deletions. Onlygo.modandgo.sumchange outsidevendor/in that graph. This is substantial generated dependency churn, not a small upgrade. The full module inventory is retained for integration and review.Coder 2.35.8 is the selected Security Support (N−2) channel, not an opportunistic latest-version bump. Explicit corrections include gRPC 1.83.2, x/crypto 0.55.0 and x/mod 0.40.0 plus required minimal-version-selection changes. No application compatibility fixes were needed in the experiment.
Evidence and remaining gates
The private graph-2 experiment passed requested local/native gates on tree
e1a059e4988c6f00db898f6457abe04dd7a15871. Against frozen databases, main→graph-2 gated findings were govulncheck 55→0, Trivy filesystem 41→0, and image 60→0. Those Trivy runs used 0.65.0, not the newly selected 0.74.0. Six non-called govulncheck advisories remain outside its failing symbol-level gate. Scanner results are not deployment-exploitation or production-readiness claims.The integrated candidate still needs complete local tests/build/vendor/lint/docs/actionlint, focused race and helper negative controls, verified native 0.74.0 installation, filesystem/image/Terraform-config scans, actual cluster E2E, hosted CI, and separately correlated normal/security/final reviews within the existing six-assessment lifetime budget. The PR E2E skip is not cluster proof. No review requests will be sent before known blockers are cleared and the candidate is stable.
Earlier MCP screenshots and terminal recording cover
fc52a605only; new integrated evidence will be labeled by exact head.Boundaries
No authentication redesign, scan suppressions, weakened gates, branch-rule changes, publisher repair, GoReleaser command/tag/changelog changes, releases/images pushed, merge, enqueue, or auto-merge. Main-image publishing is not restored by this PR alone. PR #99 and the existing dependency PRs stay untouched and open. The human retains the merge step.
📋 Implementation Plan
PR 92: integrated security baseline and CI compatibility
Scope and delivery unit
Preserve the existing MCP SDK 1.4.1 changes, regression tests, and deployment-limit documentation. Adopt the tested issue #100 graph 2 plus the two demonstrated CI-compatibility fixes in the same existing PR. Full merge-group gates prevent independently landable red prerequisite slices. Use separate logical commits: dependency graph/toolchain documentation; Trivy installation pins; fail-closed Codex-comments recognition/tests. Keep issue #100 and dependency PRs #91/#93/#94/#95/#96 open. No publisher repair, GoReleaser command/tag/changelog changes, authentication redesign, releases/images pushed, merge/enqueue/auto-merge, or unrelated cleanup.
The graph changes 374 modules (152 additions, 14 removals, 208 version changes), 2,320 files, 305,522 additions and 210,083 deletions. This is substantial generated dependency churn, not a small source patch. Preserve the complete inventory and supported-channel rationale. Six non-called govulncheck advisories remain outside the symbol-level failing gate; do not describe them as fixed or deployment exploitation.
Acceptance and phase gates
Hands-on dogfood
Use private terminal and Kind resources with explicit ownership receipts. Exercise MCP hostile-input/legitimate-client tests and real cluster CNPG/template operations from the exact candidate. Record actual commands with screenshots and video; label any accelerated terminal playback. Inspect semantic frames, upload with compatible gh --attach, and checksum-verify published assets. Retain exact source/scanner/database/native exits. Do not expose credentials or use production/shared clusters, mutable shared tags, or broad cleanup.
Evidence and cancellation
Write only under delivery/pr92/integration for new evidence. Previously finalized PR #92/issue #100 packets are read-only inputs. Read status.json before each resume/wake/external mutation and stop if inactive. Keep the existing review ledger without resetting counts. Preserve co-driven commits with fresh ref/body guards and normal pushes; do not rewrite publisher PR #99. Keep the workspace for human-landing verification. Completion means ready with evidence or a specific blocker, not merely an updated PR.
Generated with
xum• Model:coder:openai/gpt-6-astra• Thinking:xhigh