fix(voicecall): redact read-scoped status payloads#97870
Conversation
|
Real behavioral proof on the current PR head ( Runtime setup
Read-scope boundary proofA separate WebSocket client connected to that running Gateway with exactly {
"requestedScopes": ["operator.read"],
"list": {
"found": true,
"calls": [{
"callId": "fff63af6-a36e-4f86-9120-65df52a84955",
"providerCallId": "mock-fff63af6-a36e-4f86-9120-65df52a84955",
"provider": "mock",
"direction": "outbound",
"state": "initiated",
"startedAt": 1782753710598
}]
},
"single": {
"found": true,
"call": {
"callId": "fff63af6-a36e-4f86-9120-65df52a84955",
"providerCallId": "mock-fff63af6-a36e-4f86-9120-65df52a84955",
"provider": "mock",
"direction": "outbound",
"state": "initiated",
"startedAt": 1782753710598
}
},
"writeControl": "missing scope: operator.write"
}That same read-only client was denied Observed behavior:
This also separates the compatibility concern from the completed-call/history use case: detailed records still exist in voice-call storage, so a future privileged or history-specific detail surface can expose them intentionally without widening Validation
No carrier or external telephony service was used; the proof exercised the real Gateway, plugin loader, plugin runtime, RPC authorization, call manager, and persistent call store with the bundled mock provider. |
|
Codex review: needs maintainer review before merge. Reviewed June 29, 2026, 1:28 PM ET / 17:28 UTC. Summary PR surface: Source +33, Tests +80. Total +113 across 2 files. Reproducibility: yes. at source level: current main and v2026.6.10 return raw Review metrics: 1 noteworthy metric.
Stored data model Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land the DTO projection only after maintainers explicitly accept the narrowed read-scoped status contract; if raw records remain needed, expose them through a separate privileged/admin or history-specific surface. Do we have a high-confidence way to reproduce the issue? Yes, at source level: current main and v2026.6.10 return raw Is this the best way to solve the issue? Yes technically: projecting a local DTO at the status egress points is the narrowest maintainable fix for the read-scope exposure. The unresolved part is maintainer acceptance of the shipped compatibility break and whether raw details need a separate privileged/history surface. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 6de357ad4772. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source +33, Tests +80. Total +113 across 2 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
@clawsweeper re-review |
* fix(voicecall): redact read-scoped status payloads * fix(voicecall): make status assertion lint-safe
* fix(voicecall): redact read-scoped status payloads * fix(voicecall): make status assertion lint-safe
* fix(voicecall): redact read-scoped status payloads * fix(voicecall): make status assertion lint-safe
* fix(voicecall): redact read-scoped status payloads * fix(voicecall): make status assertion lint-safe
* fix(voicecall): redact read-scoped status payloads * fix(voicecall): make status assertion lint-safe (cherry picked from commit 825aafa)
* fix(voicecall): redact read-scoped status payloads * fix(voicecall): make status assertion lint-safe (cherry picked from commit 825aafa)
* fix(voicecall): redact read-scoped status payloads * fix(voicecall): make status assertion lint-safe (cherry picked from commit 825aafa)
Summary
Redacts read-scoped voice-call status payloads so status callers receive a purpose-built call summary instead of raw live call records.
Changes
voicecall.statusresponses.Validation
corepack pnpm format:fix extensions/voice-call/index.ts extensions/voice-call/index.test.tscorepack pnpm test extensions/voice-call/index.test.ts.agents/skills/autoreview/scripts/autoreview --mode local