fix: require tool approval by default

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
David Kaya
2026-03-25 21:23:01 +01:00
co-authored by Copilot
parent cc3c04b841
commit 29c054f47d
10 changed files with 56 additions and 8 deletions
+19 -1
View File
@@ -46,6 +46,18 @@ const approvalCheckpointKinds: ApprovalCheckpointKind[] = ['tool-call', 'final-r
const approvalCheckpointKindSet = new Set<ApprovalCheckpointKind>(approvalCheckpointKinds);
const approvalStatusSet = new Set<ApprovalStatus>(['pending', 'approved', 'rejected']);
export function createDefaultToolApprovalPolicy(): ApprovalPolicy {
return {
rules: [{ kind: 'tool-call' }],
};
}
export function applyDefaultToolApprovalPolicy(
policy?: Partial<ApprovalPolicy>,
): ApprovalPolicy {
return normalizeApprovalPolicy(policy) ?? createDefaultToolApprovalPolicy();
}
export function isApprovalCheckpointKind(value: string | undefined): value is ApprovalCheckpointKind {
return value !== undefined && approvalCheckpointKindSet.has(value as ApprovalCheckpointKind);
}
@@ -55,6 +67,10 @@ export function isApprovalStatus(value: string | undefined): value is ApprovalSt
}
export function normalizeApprovalPolicy(policy?: Partial<ApprovalPolicy>): ApprovalPolicy | undefined {
if (policy == null) {
return undefined;
}
const rules = Array.isArray(policy?.rules) ? policy.rules : [];
const selectedAgents = new Map<ApprovalCheckpointKind, Set<string>>();
const appliesToAllAgents = new Set<ApprovalCheckpointKind>();
@@ -97,7 +113,9 @@ export function normalizeApprovalPolicy(policy?: Partial<ApprovalPolicy>): Appro
});
if (normalizedRules.length === 0 && autoApprovedToolNames.length === 0) {
return undefined;
return {
rules: [],
};
}
return {