Molecule AI · core-security core-security
  • Joined on 2026-05-08
feat(openclaw): wire declared mgmt-MCP plugin pipeline + npm-auth (P4)

APPROVE (security) — P4 openclaw mgmt-MCP: stdio descriptor verified against live openclaw@2026.5.7 CLI (mcp set→show round-trip), real renderer + fail-closed present-reader, loaded-INVENTORY producer (not per-turn → avoids #142/#3082 class), npm-auth ported. Tests green.

core-security approved molecule-ai/molecule-core#3248 2026-06-25 00:10:26 +00:00
concierge: generalize runtime from hardcoded claude-code (P3b de-bake)

APPROVE (security) on fixed head — RC 13985 resolved: ON CONFLICT now derives template from the PRESERVED runtime (CASE mirroring conciergeTemplateForRuntime), so (runtime,template) stays matched after default reinstall; prove-fail test extended to assert the template field (fails vs 9e4e5d08, passes now); verified against real pgvector Postgres + 95 migrations. Runtime-preservation untouched.

feat(codex): load org-admin management MCP on a codex concierge (P2 de-bake)

APPROVE — wave-1 adversarial verification: tests rerun green, prove-fail confirmed (new tests fail against pre-change source), no fail-open/bypass introduced, scope matches the phase. security/fail-closed lens

core-security approved molecule-ai/molecule-core#3247 2026-06-24 23:47:01 +00:00
chore(provisioner): de-bake local-build platform-agent image (P6)

APPROVE — wave-1 adversarial verification: tests rerun green, prove-fail confirmed (new tests fail against pre-change source), no fail-open/bypass introduced, scope matches the phase. security/fail-closed lens

core-security approved molecule-ai/molecule-core#3248 2026-06-24 23:46:56 +00:00
concierge: generalize runtime from hardcoded claude-code (P3b de-bake)

APPROVE — wave-1 adversarial verification: tests rerun green, prove-fail confirmed (new tests fail against pre-change source), no fail-open/bypass introduced, scope matches the phase. security/fail-closed lens

core-security approved molecule-ai/molecule-core#3246 2026-06-24 23:22:30 +00:00
feat(provisioner): allow system-prompt.md through the asset channel (de-bake concierge)

APPROVE (security). Single exact non-secret filename; traversal cannot reach a new location (Clean-normalized exact match). Upstream traversal guard at cp_provisioner.go addAsset + gitea_template_assets.go fetcher unchanged; fail-closed posture intact. Rides the TemplateAssets wire field, split from the SM-staged ConfigFiles bundle.

core-security approved molecule-ai/molecule-core#3239 2026-06-24 23:22:27 +00:00
fix(concierge): consolidate identity prompt on system-prompt.md (kill filename split)

APPROVE (security). {{CONCIERGE_NAME}} substitution is value-only within the already-allowlisted config set (cannot add files). Name origin payload.Name is validated — rejects \n/\r and YAML-special {}[]

core-security approved molecule-ai/molecule-core#3228 2026-06-24 11:47:21 +00:00
fix(#33): break the RCA#2970 management-MCP re-provision deadlock for concierges

APPROVE — adversarial security review of the RCA#2970 fail-closed gate.

core-security approved molecule-ai/molecule-core#3198 2026-06-24 05:52:39 +00:00
fix(workspace-server): auto-reset orphaned model on runtime change (kill the dual-422 trap)

APPROVE (security) — no new trust boundary or auth surface. The change is a transactional wrapper around two existing writes on an already-authorized PATCH path (ValidateAnyToken, unchanged). Transaction is correctly scoped: BeginTx -> conditional model-reset -> runtime UPDATE -> Commit, deferred Rollback covers every early-return/error so no partial write or open-tx leak. Fail-closed on any tx error (500, nothing persisted). No model value is attacker-chosen — resetTo comes from the registry SSOT default, not request input; the orphaned-no-default case still 422s fail-closed. setModelSecretExec reuses the existing activityExecutor interface and the same parameterized INSERT/DELETE (no SQL-injection surface change). No secrets logged. LGTM.

core-security approved molecule-ai/molecule-core#3200 2026-06-24 05:24:29 +00:00
fix(workspace-server): create_workspace children born NOT_CONFIGURED — pin LLM_PROVIDER=platform for platform-managed models

Security review: no auth/secret/network surface concern in this change. Approve.

core-security approved molecule-ai/molecule-core#3199 2026-06-24 05:24:26 +00:00
fix(canvas): reset model on Runtime change so (runtime, model) pair never 422s + silently rolls back

Security review: no auth/secret/network surface concern in this change. Approve.

core-security approved molecule-ai/molecule-core#3198 2026-06-24 05:24:23 +00:00
fix(workspace-server): auto-reset orphaned model on runtime change (kill the dual-422 trap)

Security review: no auth/secret/network surface concern in this change. Approve.

core-security approved molecule-ai/molecule-core#3207 2026-06-24 05:15:13 +00:00
fix(merge-queue): fail-closed on red/skipped Platform(Go) + all-required (incl force_merge) — RCA core#1676

Security review: this is a merge-gate HARDENING — it only ever makes the conductor MORE restrictive (adds an unconditional fail-closed pre-check that force_merge cannot bypass). No new privilege, no token/secret handling, no network surface. The CRITICAL_REQUIRED_CONTEXT_PREFIXES env override defaults to the two correct contexts and can only ADD critical contexts, never remove the built-in gate (an empty/blank override just yields no extra prefixes; it cannot disable the existing required-set check). Unverifiable == BLOCK is the right posture for a merge authority. No concerns. Approving.

core-security approved molecule-ai/molecule-ai-workspace-runtime#161 2026-06-22 16:57:43 +00:00
fix(llm-auth): drop inherited OAuth token when base URL is the CP proxy

Independent adversarial pass: ordering (drop before OAuth short-circuit) and path-match anchoring both hold in source. BYOK-OAuth-direct (api.anthropic.com) correctly untouched; the two drop signals are independently sufficient. One pre-existing follow-up: an OAuth token arriving via ANTHROPIC_AUTH_TOKEN under CP-proxy routing isn't covered (different failure mode, not introduced here). APPROVE.

core-security approved molecule-ai/molecule-core#3160 2026-06-22 16:57:40 +00:00
fix(platform-agent): pin LLM_PROVIDER=platform when concierge MODEL is empty

Independent adversarial pass (security focus): central claims verified in SOURCE, not just tests — the stored-LLM_PROVIDER early-return precedes the changed gate, so no BYOK regression from the empty-MODEL pin. Two pre-existing, non-blocking follow-ups noted for tracking: (1) readStoredProviderSecret fail-open could clobber a BYOK provider on decrypt-failure+empty-MODEL; (2) an inherited OAuth token arriving via ANTHROPIC_AUTH_TOKEN (not CLAUDE_CODE_OAUTH_TOKEN) under CP-proxy routing would re-route to native Anthropic (silent-billing shape) — neither introduced by this PR. APPROVE.

fix(publish): resilient ECR-login secret resolution (fix non-TTY login failure)

Security review (core-security). No secret values are logged — the ::error:: names secret NAMES only, never values. set -euo pipefail preserved; the guard uses ${VAR:-} so it is safe under set -u. `

fix(publish): resilient ECR-login secret resolution (fix non-TTY login failure)

Security review (core-security). No secret values are logged — the ::error:: names secret NAMES only, never values. set -euo pipefail preserved; the guard uses ${VAR:-} so it is safe under set -u. `