Skip to content

Commit 7a21137

Browse files
committed
fix(plugin-approvals): the action-link token object is not exposed through the automatic API
Claude-Session: https://claude.ai/code/session_013j5gkUCpqQiti4GgPqqmnt Co-authored-by: Claude <noreply@anthropic.com>
1 parent c8584b9 commit 7a21137

1 file changed

Lines changed: 12 additions & 1 deletion

File tree

‎packages/plugins/plugin-approvals/src/sys-approval-token.object.ts‎

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,17 @@ export const SysApprovalToken = ObjectSchema.create({
102102
enable: {
103103
// [ADR-0103] Engine-owned: one-time email-approval tokens are minted and
104104
// consumed by the approval engine (SYSTEM_CTX), never via the data API.
105-
apiMethods: ['get', 'list'],
105+
//
106+
// [#22616] Declared in the form every door enforces, so the generic doors
107+
// serve token rows to no caller — as the approvals door serves them to
108+
// nobody. `apiEnabled: false` is the automatic API's off switch: judged
109+
// first for every operation (`apiExposureDenialReason` → 404
110+
// OBJECT_API_DISABLED on REST, the dispatcher and MCP), and the one flag the
111+
// cross-object search reads. `apiMethods: []` is `deny-all`
112+
// (`api-derivation.ts`); the read methods are retired, not the key dropped,
113+
// because an ABSENT whitelist resolves to fully open. The engine's mint,
114+
// lookup-by-digest and consume path runs as the system and is untouched.
115+
apiEnabled: false,
116+
apiMethods: [],
106117
},
107118
});

0 commit comments

Comments
 (0)