Skip to content

v1.15.0 — container startup, audit binding & prod-auth hardening (3 High + 6 Medium)#20

Merged
wyckit merged 1 commit into
masterfrom
fix/v1.15-startup-audit-auth
Jun 22, 2026
Merged

v1.15.0 — container startup, audit binding & prod-auth hardening (3 High + 6 Medium)#20
wyckit merged 1 commit into
masterfrom
fix/v1.15-startup-audit-auth

Conversation

@wyckit

@wyckit wyckit commented Jun 22, 2026

Copy link
Copy Markdown
Owner

Closes an eighth external review. Verified against current master first. 256 passing + 3 env-gated skipped.

High

  • Container startup uses the embedded bundle — the web host falls back to the bundle embedded in IntentMesh.Core when no dataset/compiled is on disk, so a published image starts self-contained instead of exiting fatally.
  • MCP audit binds the exact forwarded payload — a signed external.call.json records the precise normalized JSON-RPC payload (incl. write_file.content, edit_file.edits, search_files.pattern, email body). Owner sidecar is HMAC-signed; MCP records a distinct principal (Mcp_forward_records_the_signed_exact_payload_including_content, A_signed_owner_sidecar_detects_tampering_under_verification).
  • Production authINTENTMESH_AUTH_KEY must differ from INTENTMESH_AUDIT_KEY; INTENTMESH_PROXY_SECRET ≥16 chars; rate-limit key uses the last (proxy-stamped) X-Forwarded-For hop.

Medium

  • Untrusted SideEffectHint:"none" can't suppress a side-effecting GET/HEAD (OpenApiImporter_untrusted_none_hint_cannot_suppress_a_side_effecting_get).
  • 128-bit run ids + collision-fail (Run_id_is_a_128_bit_content_address_and_resave_is_idempotent).
  • Web host enforces retention (INTENTMESH_RUNS_KEEP, default 1000) — Retention_caps_live_runs_per_tenant.
  • Opt-in NuGet signing wired in CI (signs when a cert secret is configured; checksums after signing).
  • Doc/version drift fixed (README version; stale WEB_TOKEN proxy guidance replaced).

NuGet cryptographic signing still requires you to provide a code-signing certificate via the CI secrets; without it, packages ship unsigned (provenance attestation + SHA256SUMS apply).

🤖 Generated with Claude Code

…h hardening (3 High + 6 Medium)

High:
- Web host falls back to the EMBEDDED bundle when no dataset/compiled dir is on
  disk, so a container starts self-contained instead of exiting fatally.
- MCP pre-forward audit binds the EXACT normalized forwarded payload via a signed
  external.call.json (captures content/edits/pattern/body the typed action omits);
  owner sidecar is HMAC-signed and records a distinct principal (not tenant==principal).
- Production auth: INTENTMESH_AUTH_KEY must differ from INTENTMESH_AUDIT_KEY;
  INTENTMESH_PROXY_SECRET must be >=16 chars; rate-limit key uses the LAST
  X-Forwarded-For hop (proxy-stamped), not the spoofable leftmost.

Medium:
- Untrusted SideEffectHint:"none" can't suppress a side-effecting GET/HEAD.
- Run ids are 128-bit (32 hex); Save fails closed on a same-id different-signature
  collision (idempotent re-save still allowed).
- Web host enforces retention: per-tenant live runs capped to INTENTMESH_RUNS_KEEP
  (default 1000; older archived).
- Opt-in NuGet signing wired in CI (signs when a cert secret is set; checksums after).
- Doc/version drift fixed (README version; stale WEB_TOKEN proxy guidance replaced).

RunArtifactStore: RecordOwner/ReadOwner signing, RecordExternalCall/ReadExternalCall,
ExternalCallRecord, RunOwner.Signature/KeyId. 5 new tests; 256 passing + 3 skipped.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@wyckit wyckit merged commit 409e652 into master Jun 22, 2026
2 checks passed
@wyckit wyckit deleted the fix/v1.15-startup-audit-auth branch June 22, 2026 11:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant