diff --git a/src/commands/doctor/shared/preview-warnings.test.ts b/src/commands/doctor/shared/preview-warnings.test.ts index f9d4907d7112..0546a630b5e0 100644 --- a/src/commands/doctor/shared/preview-warnings.test.ts +++ b/src/commands/doctor/shared/preview-warnings.test.ts @@ -1006,6 +1006,43 @@ describe("doctor preview warnings", () => { expect(warnings).toStrictEqual([]); }); + it("does not warn for configured tool sections when the profile id is unknown", () => { + const malformedConfig = { + tools: { + profile: "custom-profile", + exec: { + security: "allowlist", + }, + byProvider: { + openai: { + profile: "custom-provider-profile", + }, + }, + }, + agents: { + list: [ + { + id: "sage", + tools: { + exec: { + security: "allowlist", + }, + byProvider: { + openai: { + profile: "custom-agent-provider-profile", + }, + }, + }, + }, + ], + }, + } as unknown as Parameters[0]; + + const warnings = collectProfileConfiguredToolSectionWarnings(malformedConfig); + + expect(warnings).toStrictEqual([]); + }); + it("does not warn when default group visible replies are automatic", () => { const warnings = collectVisibleReplyToolPolicyWarnings({ channels: { diff --git a/src/commands/doctor/shared/preview-warnings.ts b/src/commands/doctor/shared/preview-warnings.ts index 0ad329917393..857099b9a86c 100644 --- a/src/commands/doctor/shared/preview-warnings.ts +++ b/src/commands/doctor/shared/preview-warnings.ts @@ -403,6 +403,9 @@ function collectProfileConfiguredToolSectionScopeWarnings(params: { ? tools.alsoAllow.filter((entry): entry is string => typeof entry === "string") : params.inheritedAlsoAllow; const profilePolicy = mergeAlsoAllowPolicy(resolveToolProfilePolicy(profile), alsoAllow); + if (!profilePolicy) { + return []; + } const uncoveredEntries = collectUncoveredConfiguredToolSectionGrantEntries( configuredEntries, profilePolicy, @@ -454,6 +457,9 @@ function collectByProviderConfiguredToolSectionWarnings(params: { const alsoAllow = readPreviewStringList(policy.alsoAllow) ?? readPreviewStringList(inheritedPolicy?.alsoAllow); const profilePolicy = mergeAlsoAllowPolicy(resolveToolProfilePolicy(profile), alsoAllow); + if (!profilePolicy) { + return []; + } const uncoveredEntries = collectUncoveredConfiguredToolSectionGrantEntries( params.configuredEntries, profilePolicy, @@ -560,6 +566,9 @@ function collectInheritedByProviderConfiguredToolSectionWarnings(params: { readPreviewStringList(overridingPolicy?.alsoAllow) ?? readPreviewStringList(inheritedPolicy.alsoAllow); const profilePolicy = mergeAlsoAllowPolicy(resolveToolProfilePolicy(profile), alsoAllow); + if (!profilePolicy) { + return []; + } const uncoveredEntries = collectUncoveredConfiguredToolSectionGrantEntries( params.configuredEntries, profilePolicy,