2.3.0 (2026-08-06)
Features Added
- Added
AzureUserSecurityContextandAzureCreateResponseOptions.setUserSecurityContext(...)for supplying application and end-user context to Microsoft Defender for Cloud when creating an Azure response. See Protecting AI applications for details. - Added
AgentIdentityStatus(valuesACTIVEandDISABLED) andAgentIdentity.getStatus()to expose the status of an agent's instance identity or blueprint identity. - Added an
allowedCallersproperty to many tool models, backed by the newCallableToolAllowedCallerenum (DIRECT,PROGRAMMATIC), so callers can restrict how a tool may be invoked. Supported types includeApplyPatchToolParameter,CodeInterpreterTool,CodeInterpreterToolboxTool,CustomToolParameter,FunctionShellToolParameter,FunctionTool,McpTool, andMcpToolboxTool. - Added programmatic tool calling support: new
ProgrammaticToolCallingParametertool andToolType.PROGRAMMATIC_TOOL_CALLINGvalue. - Toolbox Search graduated to general availability. Added
ToolSearchToolboxToolandToolboxToolType.TOOLBOX_SEARCHfor the GA tool; the previewToolboxSearchPreviewToolboxTool(toolbox_search_preview) is retained alongside for backward compatibility. - Added
McpTool.setTunnelId(...)/getTunnelId()and the same onMcpToolboxToolto route MCP calls through a Secure MCP Tunnel as an alternative toserverUrlorconnectorId. - Added
FunctionTool.setOutputSchema(...)/getOutputSchema()for declaring the JSON schema of a function tool's return payload. - Added
OptimizationOptions.setMaxStalls(...)/getMaxStalls()for configuring early-stop behavior of preview agent-optimization jobs. - Added
ResponseUsageInputTokensDetails.getCacheWriteTokens()to expose the number of tokens written to the prompt cache in a response.
Breaking Changes
BetaAgentsClient.createOptimizationJob(OptimizationJob)andcreateOptimizationJob(OptimizationJob, String)were replaced by long-running operationsbeginCreateOptimizationJob(OptimizationJob)andbeginCreateOptimizationJob(OptimizationJob, String), which returnSyncPoller<OptimizationJob, OptimizationJobResult>instead ofOptimizationJob. The correspondingBetaAgentsAsyncClientmethods now returnPollerFlux<OptimizationJob, OptimizationJobResult>. The protocol method was likewise replaced bybeginCreateOptimizationJob(BinaryData, RequestOptions)returningSyncPoller<BinaryData, BinaryData>/PollerFlux<BinaryData, BinaryData>.ResponseUsageInputTokensDetailsnow also carries acacheWriteTokensfield. Deserialized instances continue to work, but any code depending on the previous single-field structure should be updated to read the new value.
Other Changes
- Refined preview annotations.
AgentDefinitionandCreateAgentVersionInputare no longer marked@Betaat the class level; instead the preview-only fields (for example,CreateAgentVersionInput.getDefinition()andCreateAgentVersionInput.isDraft()) are individually annotated. Additional preview tool classes such asA2APreviewTool,BingCustomSearchPreviewTool,BrowserAutomationPreviewTool,FabricIqPreviewTool,MemorySearchPreviewTool,MicrosoftFabricPreviewTool,SharepointPreviewTool,WorkIqPreviewTool, and their toolbox counterparts are now marked@Betaso preview surface area is explicit in generated API docs. - Reworked internal LRO polling-strategy customizations so that both
BetaMemoryStoresClientandBetaAgentsClientlong-running operations inherit the per-clientFoundry-Featuresvalue from the builder pipeline instead of a hardcoded polling-only header. This lets each Beta sub-client's poll GETs carry the same preview opt-ins as its initial request. - Regenerated client from the updated TypeSpec specification.
- Updated version of
openaiclient library to4.45.0.