Fix ops-agent fd-secret payload contract #157

Merged
janpeter merged 1 commit from codex/ops-agent-fd-secret-contract-gap into main 2026-08-26 09:44:14 +02:00
Owner

Samenvatting

  • Weigert het legacy bodyveld secret op /agent/v1/exec, ook voor secret: fd commands.
  • Vervangt de fd-secret request-shape door expliciete velden: secret_transport: "fd" en secret_value.
  • Schrijft alleen secret_value naar child descriptor 3.
  • Weigert secret_transport/secret_value voor commands zonder fd-secret contract.
  • Werkt commands.yml comments en het implementatieplan bij.

Context

Follow-up op PR #156. Server-remediation voor T486 liet zien dat de oude T486 adapter body secret: "fd" als marker gebruikt en de echte secret als trailing bytes na Content-Length stuurde. PR #156 maakte de server tolerant genoeg om de marker zelf als credentialwaarde naar fd 3 te schrijven. Deze PR maakt dat fail-closed: legacy secret wordt altijd 400, zodat de oude adapter niet stil een literal fd kan transporteren.

Plan: docs/superpowers/plans/2026-08-26-ops-agent-fd-secret-contract-gap.md.

Verificatie

  • RED: npm test -- test/ops-agent-exec-capability-secret.test.ts faalde 8/9 tests op de oude shape.
  • GREEN: npm test -- test/ops-agent-exec-capability-secret.test.ts => 1 file / 9 tests passed.
  • git diff --check
  • npm -C ops-agent run check
  • npm run typecheck
  • npm test -- test/control-room-whitelist.test.ts test/ops-agent-exec-capability-secret.test.ts test/ops-agent-flow-capability-secret.test.ts test/flow-reconcile.test.ts test/scrum4me-workers-build-metadata-flow.test.ts test/worker-skills-flow.test.ts test/system-power-flow-files.test.ts test/hub-whitelist-entries.test.ts => 8 files / 46 tests passed
  • npm test -- test/control-room-legacy-routes.test.ts test/control-room-agent-routes.test.ts => 2 files / 89 tests passed
## Samenvatting - Weigert het legacy bodyveld `secret` op `/agent/v1/exec`, ook voor `secret: fd` commands. - Vervangt de fd-secret request-shape door expliciete velden: `secret_transport: "fd"` en `secret_value`. - Schrijft alleen `secret_value` naar child descriptor 3. - Weigert `secret_transport`/`secret_value` voor commands zonder fd-secret contract. - Werkt commands.yml comments en het implementatieplan bij. ## Context Follow-up op PR #156. Server-remediation voor T486 liet zien dat de oude T486 adapter body `secret: "fd"` als marker gebruikt en de echte secret als trailing bytes na `Content-Length` stuurde. PR #156 maakte de server tolerant genoeg om de marker zelf als credentialwaarde naar fd 3 te schrijven. Deze PR maakt dat fail-closed: legacy `secret` wordt altijd 400, zodat de oude adapter niet stil een literal `fd` kan transporteren. Plan: `docs/superpowers/plans/2026-08-26-ops-agent-fd-secret-contract-gap.md`. ## Verificatie - RED: `npm test -- test/ops-agent-exec-capability-secret.test.ts` faalde 8/9 tests op de oude shape. - GREEN: `npm test -- test/ops-agent-exec-capability-secret.test.ts` => 1 file / 9 tests passed. - `git diff --check` - `npm -C ops-agent run check` - `npm run typecheck` - `npm test -- test/control-room-whitelist.test.ts test/ops-agent-exec-capability-secret.test.ts test/ops-agent-flow-capability-secret.test.ts test/flow-reconcile.test.ts test/scrum4me-workers-build-metadata-flow.test.ts test/worker-skills-flow.test.ts test/system-power-flow-files.test.ts test/hub-whitelist-entries.test.ts` => 8 files / 46 tests passed - `npm test -- test/control-room-legacy-routes.test.ts test/control-room-agent-routes.test.ts` => 2 files / 89 tests passed
fix: split ops-agent fd secret payload
All checks were successful
CI / Root app checks (pull_request) Successful in 6m57s
CI / Ops-agent checks (pull_request) Successful in 15s
CI / Deploy artifact checks (pull_request) Successful in 12s
CI / Mac foundation hermetic checks (pull_request) Successful in 2m58s
CI / Mac foundation reproducible build (pull_request) Successful in 3m2s
CI / Docker image build (pull_request) Successful in 2m31s
450dd73177
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
janpeter/Ops-dashboard!157
No description provided.