diff --git a/src/agents/transcript-policy.ts b/src/agents/transcript-policy.ts index 9ae14d38f..f50b0bfc9 100644 --- a/src/agents/transcript-policy.ts +++ b/src/agents/transcript-policy.ts @@ -73,6 +73,9 @@ export function resolveTranscriptPolicy(params: { const isGoogle = isGoogleModelApi(params.modelApi); const isAnthropic = isAnthropicApi(params.modelApi, provider); const isOpenAi = isOpenAiProvider(provider) || (!provider && isOpenAiApi(params.modelApi)); + // Azure OpenAI uses OpenAI-compatible APIs but has stricter limits (40 char tool call IDs). + // Detect via provider name containing "azure". + const isAzureOpenAi = isOpenAiApi(params.modelApi) && provider.includes("azure"); const isMistral = isMistralModel({ provider, modelId }); const isOpenRouterGemini = (provider === "openrouter" || provider === "opencode") && @@ -83,9 +86,9 @@ export function resolveTranscriptPolicy(params: { modelId, }); - const needsNonImageSanitize = isGoogle || isAnthropic || isMistral || isOpenRouterGemini; + const needsNonImageSanitize = isGoogle || isAnthropic || isMistral || isOpenRouterGemini || isAzureOpenAi; - const sanitizeToolCallIds = isGoogle || isMistral; + const sanitizeToolCallIds = isGoogle || isMistral || isAzureOpenAi; const toolCallIdMode: ToolCallIdMode | undefined = isMistral ? "strict9" : sanitizeToolCallIds