---
title: Events
url: https://platform.claude.com/docs/en/api/csharp/beta/sessions/events
---

# Events

## List Events

`EventListPage Beta.Sessions.Events.List(parameters, cancellationToken = default)`

**GET** `/v1/sessions/{session_id}/events`

List Events

### Parameters

- `EventListParams parameters`

  - `required string sessionID` (path parameter)

  - `DateTimeOffset createdAtGt` (query parameter)

    Return events created after this time (exclusive). Compared against the event's `processed_at` value.

    format: date-time

  - `DateTimeOffset createdAtGte` (query parameter)

    Return events created at or after this time (inclusive). Compared against the event's `processed_at` value.

    format: date-time

  - `DateTimeOffset createdAtLt` (query parameter)

    Return events created before this time (exclusive). Compared against the event's `processed_at` value.

    format: date-time

  - `DateTimeOffset createdAtLte` (query parameter)

    Return events created at or before this time (inclusive). Compared against the event's `processed_at` value.

    format: date-time

  - `int limit` (query parameter)

    format: int32

  - `Order order` (query parameter)

    Sort direction for results, ordered by the event's `processed_at`. Defaults to `asc` (chronological).

    - `Asc("asc")`

    - `Desc("desc")`

  - `string page` (query parameter)

    Opaque pagination cursor from a previous response's `next_page`.

  - `IReadOnlyList<BetaManagedAgentsSessionEventType> types` (query parameter)

    Filter by event type. Values match the `type` field on returned events (for example, `user.message` or `agent.tool_use`). Omit to return all event types.

    - `UserMessage("user.message")`

    - `UserInterrupt("user.interrupt")`

    - `UserToolConfirmation("user.tool_confirmation")`

    - `UserCustomToolResult("user.custom_tool_result")`

    - `AgentCustomToolUse("agent.custom_tool_use")`

    - `AgentMessage("agent.message")`

    - `AgentThinking("agent.thinking")`

    - `AgentMcpToolUse("agent.mcp_tool_use")`

    - `AgentMcpToolResult("agent.mcp_tool_result")`

    - `AgentToolUse("agent.tool_use")`

    - `AgentToolResult("agent.tool_result")`

    - `AgentThreadMessageReceived("agent.thread_message_received")`

    - `AgentThreadMessageSent("agent.thread_message_sent")`

    - `AgentThreadContextCompacted("agent.thread_context_compacted")`

    - `SessionError("session.error")`

    - `SessionStatusRescheduled("session.status_rescheduled")`

    - `SessionStatusRunning("session.status_running")`

    - `SessionStatusIdle("session.status_idle")`

    - `SessionStatusTerminated("session.status_terminated")`

    - `SessionThreadCreated("session.thread_created")`

    - `SpanOutcomeEvaluationStart("span.outcome_evaluation_start")`

    - `SpanOutcomeEvaluationEnd("span.outcome_evaluation_end")`

    - `SpanModelRequestStart("span.model_request_start")`

    - `SpanModelRequestEnd("span.model_request_end")`

    - `SpanOutcomeEvaluationOngoing("span.outcome_evaluation_ongoing")`

    - `UserDefineOutcome("user.define_outcome")`

    - `SessionThreadStatusRunning("session.thread_status_running")`

    - `SessionThreadStatusIdle("session.thread_status_idle")`

    - `SessionThreadStatusTerminated("session.thread_status_terminated")`

    - `UserToolResult("user.tool_result")`

    - `SessionThreadStatusRescheduled("session.thread_status_rescheduled")`

    - `SessionUpdated("session.updated")`

    - `SystemMessage("system.message")`

    - `SessionUsage("session.usage")`

    - `WorkflowRunCreated("workflow_run.created")`

    - `WorkflowRunStatusRunning("workflow_run.status_running")`

    - `WorkflowRunStatusIdle("workflow_run.status_idle")`

    - `WorkflowRunStatusEnded("workflow_run.status_ended")`

    - `WorkflowRunError("workflow_run.error")`

    - `WorkflowRunPhaseStarted("workflow_run.phase_started")`

    - `WorkflowRunPhaseEnded("workflow_run.phase_ended")`

  - `IReadOnlyList<AnthropicBeta> betas` (header parameter)

    This endpoint is in beta: requests must send `managed-agents-2026-04-01` in this header.

    - `MessageBatches2024_09_24("message-batches-2024-09-24")`

    - `PromptCaching2024_07_31("prompt-caching-2024-07-31")`

    - `ComputerUse2024_10_22("computer-use-2024-10-22")`

    - `ComputerUse2025_01_24("computer-use-2025-01-24")`

    - `Pdfs2024_09_25("pdfs-2024-09-25")`

    - `TokenCounting2024_11_01("token-counting-2024-11-01")`

    - `TokenEfficientTools2025_02_19("token-efficient-tools-2025-02-19")`

    - `Output128k2025_02_19("output-128k-2025-02-19")`

    - `FilesApi2025_04_14("files-api-2025-04-14")`

    - `McpClient2025_04_04("mcp-client-2025-04-04")`

    - `McpClient2025_11_20("mcp-client-2025-11-20")`

    - `DevFullThinking2025_05_14("dev-full-thinking-2025-05-14")`

    - `InterleavedThinking2025_05_14("interleaved-thinking-2025-05-14")`

    - `CodeExecution2025_05_22("code-execution-2025-05-22")`

    - `ExtendedCacheTtl2025_04_11("extended-cache-ttl-2025-04-11")`

    - `Context1m2025_08_07("context-1m-2025-08-07")`

    - `ContextManagement2025_06_27("context-management-2025-06-27")`

    - `ModelContextWindowExceeded2025_08_26("model-context-window-exceeded-2025-08-26")`

    - `Skills2025_10_02("skills-2025-10-02")`

    - `FastMode2026_02_01("fast-mode-2026-02-01")`

    - `Output300k2026_03_24("output-300k-2026-03-24")`

    - `UserProfiles2026_03_24("user-profiles-2026-03-24")`

    - `UserProfiles2026_08_18("user-profiles-2026-08-18")`

    - `UserProfiles2026_09_04("user-profiles-2026-09-04")`

    - `AdvisorTool2026_03_01("advisor-tool-2026-03-01")`

    - `ManagedAgents2026_04_01("managed-agents-2026-04-01")`

    - `CacheDiagnosis2026_04_07("cache-diagnosis-2026-04-07")`

    - `Dreaming2026_04_21("dreaming-2026-04-21")`

    - `ThinkingTokenCount2026_05_13("thinking-token-count-2026-05-13")`

    - `ServerSideFallback2026_06_01("server-side-fallback-2026-06-01")`

    - `ServerSideFallback2026_07_01("server-side-fallback-2026-07-01")`

    - `FallbackCredit2026_06_01("fallback-credit-2026-06-01")`

    - `FallbackCredit2026_07_01("fallback-credit-2026-07-01")`

    - `AgentMemory2026_07_22("agent-memory-2026-07-22")`

    - `MidConversationToolChanges2026_07_01("mid-conversation-tool-changes-2026-07-01")`

    - `Compact2026_01_12("compact-2026-01-12")`

    - `ComputerUse2025_11_24("computer-use-2025-11-24")`

    - `McpTunnels2026_06_22("mcp-tunnels-2026-06-22")`

    - `StructuredOutputs2025_11_13("structured-outputs-2025-11-13")`

    - `TaskBudgets2026_03_13("task-budgets-2026-03-13")`

    - `ThinkingDisplayUpdates2026_08_18("thinking-display-updates-2026-08-18")`

    - `CEUserManagement2026_07_13("ce-user-management-2026-07-13")`

    - `MidConversationOutputConfig2026_07_01("mid-conversation-output-config-2026-07-01")`

    - `ThinkingBindingControls2026_08_01("thinking-binding-controls-2026-08-01")`

    - `MidConversationSystemClearAt2026_08_21("mid-conversation-system-clear-at-2026-08-21")`

    - `Compact2026_09_04("compact-2026-09-04")`

    - `InlineTools2026_09_15("inline-tools-2026-09-15")`

    - `McpClient2026_09_15("mcp-client-2026-09-15")`

    - `CEPlugins2026_09_01("ce-plugins-2026-09-01")`

    - `SpendLimitReads2026_09_26("spend-limit-reads-2026-09-26")`

    - `TelemetryDestinations2026_08_11("telemetry-destinations-2026-08-11")`

    - `Webhooks2026_10_07("webhooks-2026-10-07")`

    - `MessageThreads2026_08_12("message-threads-2026-08-12")`

    - `AnalyticsUsageCost2026_08_24("analytics-usage-cost-2026-08-24")`

    - `ExperimentalClaudeTag2026_10_21("experimental-claude-tag-2026-10-21")`

  - `string workspaceID` (header parameter)

    Optional header to select the Workspace for this request. The value is a Workspace ID (for example, `wrkspc_011CZkZaBF1tNoB5wlCeusgy`).

    Only needed for credentials that can act on more than one Workspace. A credential that belongs to a specific Workspace may omit it; if sent, it must match that Workspace.

### Returns

- `class BetaManagedAgentsSessionEvent: union`

  Union type for all event types in a session.

  - `class BetaManagedAgentsUserMessageEvent`

    A user message event in the session conversation.

    - `JsonElement Type = "user.message"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyList<Content> Content`

      Array of content blocks comprising the user message.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

        - `JsonElement Type = "text"`

        - `required string Text`

          The text content.

          minLength: 1

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

        - `JsonElement Type = "image"`

        - `required Source Source`

          The source of the image data.

          - `class BetaManagedAgentsBase64ImageSource`

            Base64-encoded image data.

            - `JsonElement Type = "base64"`

            - `required string Data`

              Base64-encoded image data.

              minLength: 1

            - `required string MediaType`

              MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif", "image/webp").

              minLength: 1

          - `class BetaManagedAgentsUrlImageSource`

            Image referenced by URL.

            - `JsonElement Type = "url"`

            - `required string Url`

              URL of the image to fetch.

              minLength: 1

          - `class BetaManagedAgentsFileImageSource`

            Image referenced by file ID.

            - `JsonElement Type = "file"`

            - `required string FileID`

              ID of a previously uploaded file.

              minLength: 1

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

        - `JsonElement Type = "document"`

        - `required Source Source`

          The source of the document data.

          - `class BetaManagedAgentsBase64DocumentSource`

            Base64-encoded document data.

            - `JsonElement Type = "base64"`

            - `required string Data`

              Base64-encoded document data.

              minLength: 1

            - `required string MediaType`

              MIME type of the document (e.g., "application/pdf").

              minLength: 1

          - `class BetaManagedAgentsPlainTextDocumentSource`

            Plain text document content.

            - `JsonElement Type = "text"`

            - `required string Data`

              The plain text content.

              minLength: 1

            - `JsonElement MediaType = "text/plain"`

              MIME type of the text content. Must be "text/plain".

          - `class BetaManagedAgentsUrlDocumentSource`

            Document referenced by URL.

            - `JsonElement Type = "url"`

            - `required string Url`

              URL of the document to fetch.

              minLength: 1

          - `class BetaManagedAgentsFileDocumentSource`

            Document referenced by file ID.

            - `JsonElement Type = "file"`

            - `required string FileID`

              ID of a previously uploaded file.

              minLength: 1

        - `string? Context`

          Additional context about the document for the model.

        - `string? Title`

          The title of the document.

      - `class BetaManagedAgentsRedactedBlock`

        Placeholder for content withheld by Anthropic model policy.

        - `JsonElement Type = "redacted"`

    - `DateTimeOffset? ProcessedAt`

      Timestamp when the agent finished processing this message.

      format: date-time

  - `class BetaManagedAgentsUserInterruptEvent`

    An interrupt event that pauses agent execution and returns control to the user.

    - `JsonElement Type = "user.interrupt"`

    - `required string ID`

      Unique identifier for this event.

    - `DateTimeOffset? ProcessedAt`

      Timestamp when the interrupt was processed.

      format: date-time

    - `string? SessionThreadID`

      If absent, interrupts every non-archived thread in a multiagent session (or the primary alone in a single-agent session). If present, interrupts only the named thread.

  - `class BetaManagedAgentsUserToolConfirmationEvent`

    A tool confirmation event that approves or denies a pending tool execution.

    - `JsonElement Type = "user.tool_confirmation"`

    - `required string ID`

      Unique identifier for this event.

    - `required Result Result`

      The confirmation result: 'allow' or 'deny'.

      - `Allow("allow")`

      - `Deny("deny")`

    - `required string ToolUseID`

      The id of the `agent.tool_use` or `agent.mcp_tool_use` event this result corresponds to, which can be found in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

    - `string? DenyMessage`

      Optional message providing context for a 'deny' decision. Only allowed when result is 'deny'.

      maxLength: 10000

    - `DateTimeOffset? ProcessedAt`

      Timestamp when the confirmation was processed.

      format: date-time

    - `string? SessionThreadID`

      Set by the server to the subagent thread this confirmation was routed to. Omitted when it was routed to the primary thread.

  - `class BetaManagedAgentsUserCustomToolResultEvent`

    Event sent by the client providing the result of a custom tool execution.

    - `JsonElement Type = "user.custom_tool_result"`

    - `required string ID`

      Unique identifier for this event.

    - `required string CustomToolUseID`

      The id of the `agent.custom_tool_use` event this result corresponds to. It is also listed in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

    - `IReadOnlyList<Content> Content`

      The result content returned by the tool.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsSearchResultBlock`

        A block containing a web search result.

        - `JsonElement Type = "search_result"`

        - `required BetaManagedAgentsSearchResultCitations Citations`

          Citation settings for this search result.

          - `required bool Enabled`

            Whether citations are enabled for this search result.

        - `required IReadOnlyList<BetaManagedAgentsSearchResultContent> Content`

          Array of text content blocks from the search result.

          - `JsonElement Type = "text"`

          - `required string Text`

            The text content.

            minLength: 1

        - `required string Source`

          The URL source of the search result.

          minLength: 1

        - `required string Title`

          The title of the search result.

          minLength: 1

    - `bool? IsError`

      Whether the tool execution resulted in an error.

    - `DateTimeOffset? ProcessedAt`

      Timestamp when this result was processed.

      format: date-time

    - `string? SessionThreadID`

      Set by the server to the subagent thread this result was routed to. Omitted when it was routed to the primary thread.

  - `class BetaManagedAgentsAgentCustomToolUseEvent`

    Event emitted when the agent calls a custom tool. The session goes idle until the client sends a `user.custom_tool_result` event with the result. The client can send it as soon as this event arrives, without waiting for `session.status_idle`.

    - `JsonElement Type = "agent.custom_tool_use"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyDictionary<string, JsonElement> Input`

      Input parameters for the tool call.

    - `required string Name`

      Name of the custom tool being called.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this tool use was processed.

      format: date-time

    - `string? SessionThreadID`

      When set, this event was cross-posted from a subagent's thread to surface its custom tool use on the primary thread's stream. Empty on the thread's own events. Informational only: the server routes the matching `user.custom_tool_result` by `custom_tool_use_id`, so clients do not send it back.

  - `class BetaManagedAgentsAgentMessageEvent`

    An agent response event in the session conversation.

    - `JsonElement Type = "agent.message"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyList<Content> Content`

      Array of text blocks comprising the agent response.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsRedactedBlock`

        Placeholder for content withheld by Anthropic model policy.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this response was generated.

      format: date-time

  - `class BetaManagedAgentsAgentThinkingEvent`

    Indicates the agent is making forward progress via extended thinking. A progress signal, not a content carrier.

    - `JsonElement Type = "agent.thinking"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this thinking was produced.

      format: date-time

  - `class BetaManagedAgentsAgentMcpToolUseEvent`

    Event emitted when the agent invokes a tool provided by an MCP server.

    - `JsonElement Type = "agent.mcp_tool_use"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyDictionary<string, JsonElement> Input`

      Input parameters for the tool call.

    - `required string McpServerName`

      Name of the MCP server providing the tool.

    - `required string Name`

      Name of the MCP tool being used.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `BetaManagedAgentsAgentEvaluatedPermission EvaluatedPermission`

      The evaluated permission policy for this tool invocation.

      - `Allow("allow")`

      - `Ask("ask")`

      - `Deny("deny")`

    - `BetaManagedAgentsAgentToolEvaluation Evaluation`

      Which resolved permission_policy produced evaluated_permission: always_allow, always_ask, or auto (with the server's per-invocation judgement). Absent only when the server refused the call before any policy applied (for example, the named tool is not enabled in the session); such a refusal has evaluated_permission deny. An event recorded before this field existed reads as the arm its evaluated_permission implies (always_allow for allow, always_ask for ask).

      - `class BetaManagedAgentsAgentToolEvaluationAlwaysAllow`

        The resolved permission_policy was always_allow; accompanies evaluated_permission "allow".

        - `JsonElement Type = "always_allow"`

      - `class BetaManagedAgentsAgentToolEvaluationAlwaysAsk`

        The resolved permission_policy was always_ask; accompanies evaluated_permission "ask".

        - `JsonElement Type = "always_ask"`

      - `class BetaManagedAgentsAgentToolEvaluationAuto`

        The resolved permission_policy was auto: the server judged this invocation individually.

        - `JsonElement Type = "auto"`

        - `required BetaManagedAgentsAgentAutoEvaluatedPermission EvaluatedPermission`

          The server's judgement for this invocation.

          - `class BetaManagedAgentsAgentAutoEvaluatedPermissionAllow`

            The server judged the invocation safe to execute without client approval.

            - `JsonElement Type = "allow"`

          - `class BetaManagedAgentsAgentAutoEvaluatedPermissionAsk`

            The server reached no judgement; the invocation is held for client approval.

            - `JsonElement Type = "ask"`

            - `required string ReasonCode`

              The judgement's grounds in registry-bound terms, for client branching and audit rather than end-user display. Open registry; currently "indeterminate" (no judgement was reached). Clients must tolerate values outside this set.

              maxLength: 64

          - `class BetaManagedAgentsAgentAutoEvaluatedPermissionDeny`

            The server judged the invocation high-risk; it does not execute and a synthetic error tool result is appended.

            - `JsonElement Type = "deny"`

            - `required string ReasonCode`

              The judgement's grounds in registry-bound terms. Open registry; currently "high_risk" (judged high-risk; the call does not run). Clients must tolerate values outside this set.

              maxLength: 64

    - `string? SessionThreadID`

      When set, this event was cross-posted from a subagent's thread to surface its permission request on the primary thread's stream. Empty on the thread's own events. Informational only: the server routes the matching `user.tool_confirmation` by `tool_use_id`, so clients do not send it back.

  - `class BetaManagedAgentsAgentMcpToolResultEvent`

    Event representing the result of an MCP tool execution.

    - `JsonElement Type = "agent.mcp_tool_result"`

    - `required string ID`

      Unique identifier for this event.

    - `required string McpToolUseID`

      The id of the `agent.mcp_tool_use` event this result corresponds to.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `IReadOnlyList<Content> Content`

      The result content returned by the tool.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsSearchResultBlock`

        A block containing a web search result.

    - `bool? IsError`

      Whether the tool execution resulted in an error.

  - `class BetaManagedAgentsAgentToolUseEvent`

    Event emitted when the agent invokes a built-in agent tool.

    - `JsonElement Type = "agent.tool_use"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyDictionary<string, JsonElement> Input`

      Input parameters for the tool call.

    - `required string Name`

      Name of the agent tool being used.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `BetaManagedAgentsAgentEvaluatedPermission EvaluatedPermission`

      The evaluated permission policy for this tool invocation.

    - `BetaManagedAgentsAgentToolEvaluation Evaluation`

      Which resolved permission_policy produced evaluated_permission: always_allow, always_ask, or auto (with the server's per-invocation judgement). Absent only when the server refused the call before any policy applied (for example, the named tool is not enabled in the session); such a refusal has evaluated_permission deny. An event recorded before this field existed reads as the arm its evaluated_permission implies (always_allow for allow, always_ask for ask).

    - `string? SessionThreadID`

      When set, this event was cross-posted from a subagent's thread to surface its permission request on the primary thread's stream. Empty on the thread's own events. Informational only: the server routes the matching `user.tool_confirmation` or `user.tool_result` by `tool_use_id`, so clients do not send it back.

  - `class BetaManagedAgentsAgentToolResultEvent`

    Event representing the result of an agent tool execution.

    - `JsonElement Type = "agent.tool_result"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string ToolUseID`

      The id of the `agent.tool_use` event this result corresponds to.

    - `IReadOnlyList<Content> Content`

      The result content returned by the tool.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsSearchResultBlock`

        A block containing a web search result.

    - `bool? IsError`

      Whether the tool execution resulted in an error.

  - `class BetaManagedAgentsAgentThreadMessageReceivedEvent`

    Delivery event written to the target thread's input stream when an agent-to-agent message arrives.

    - `JsonElement Type = "agent.thread_message_received"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyList<Content> Content`

      Message content blocks.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsRedactedBlock`

        Placeholder for content withheld by Anthropic model policy.

    - `required string FromSessionThreadID`

      Public `sthr_` ID of the thread that sent the message.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the message was received.

      format: date-time

    - `string? FromAgentName`

      Name of the callable agent this message came from. Absent when received from the primary agent.

  - `class BetaManagedAgentsAgentThreadMessageSentEvent`

    Observability event emitted to the sender's output stream when an agent-to-agent message is sent.

    - `JsonElement Type = "agent.thread_message_sent"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyList<Content> Content`

      Message content blocks.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsRedactedBlock`

        Placeholder for content withheld by Anthropic model policy.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the message was sent.

      format: date-time

    - `required string ToSessionThreadID`

      Public `sthr_` ID of the thread the message was sent to.

    - `string? ToAgentName`

      Name of the callable agent this message was sent to. Absent when sent to the primary agent.

  - `class BetaManagedAgentsAgentThreadContextCompactedEvent`

    Indicates that context compaction (summarization) occurred during the session.

    - `JsonElement Type = "agent.thread_context_compacted"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when compaction was processed.

      format: date-time

  - `class BetaManagedAgentsSessionErrorEvent`

    An error event indicating a problem occurred during session execution.

    - `JsonElement Type = "session.error"`

    - `required string ID`

      Unique identifier for this event.

    - `required Error Error`

      - `class BetaManagedAgentsUnknownError`

        An unknown or unexpected error occurred during session execution. A fallback variant; clients that don't recognize a new error code can match on `retry_status` and `message` alone.

        - `JsonElement Type = "unknown_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

            - `JsonElement Type = "retrying"`

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

            - `JsonElement Type = "exhausted"`

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

            - `JsonElement Type = "terminal"`

      - `class BetaManagedAgentsModelOverloadedError`

        The model is currently overloaded. Emitted after automatic retries are exhausted.

        - `JsonElement Type = "model_overloaded_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsModelRateLimitedError`

        The model request was rate-limited.

        - `JsonElement Type = "model_rate_limited_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsModelRequestFailedError`

        A model request failed for a reason other than overload or rate-limiting.

        - `JsonElement Type = "model_request_failed_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsMcpConnectionFailedError`

        Failed to connect to an MCP server.

        - `JsonElement Type = "mcp_connection_failed_error"`

        - `required string McpServerName`

          Name of the MCP server that failed to connect.

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsMcpAuthenticationFailedError`

        Authentication to an MCP server failed.

        - `JsonElement Type = "mcp_authentication_failed_error"`

        - `required string McpServerName`

          Name of the MCP server that failed authentication.

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsBillingError`

        The caller's organization or workspace cannot make model requests — out of credits or spend limit reached. Retrying with the same credentials will not succeed; the caller must resolve the billing state.

        - `JsonElement Type = "billing_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsCredentialHostUnreachableError`

        An `environment_variable` credential's `auth.networking.allowed_hosts` includes a host the environment's network policy does not permit.

        - `JsonElement Type = "credential_host_unreachable_error"`

        - `required string CredentialID`

          ID of the affected credential.

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

        - `required string VaultID`

          ID of the vault containing the affected credential.

      - `class BetaManagedAgentsToolUseLimitReachedError`

        The turn stopped because the agent loop reached its limit on tool-use rounds (one model response that calls tools, plus running those tools, is one round), not because a request failed. The thread goes idle with `stop_reason: retries_exhausted` (a child thread then terminates); the next `user.message` starts a new turn.

        - `JsonElement Type = "tool_use_limit_reached_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsCompactionLimitReachedError`

        The turn stopped because the context was compacted the maximum number of times in a row without the model producing a message or a tool call, not because a request failed. The thread goes idle with `stop_reason: retries_exhausted` (a child thread then terminates); the next `user.message` starts a new turn.

        - `JsonElement Type = "compaction_limit_reached_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsRepositoryAuthenticationError`

        The repository host rejected the credentials, or required credentials and received none.

        - `JsonElement Type = "repository_authentication_error"`

        - `required string Message`

          Human-readable error description.

        - `required string? RepositoryUrl`

          URL of the repository that could not be cloned. Null when it could not be identified.

        - `required RetryStatus RetryStatus`

          What the client should do next. Always `retrying`: the session keeps running without the repository.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsRepositoryForbiddenError`

        The repository host refused access to the repository.

        - `JsonElement Type = "repository_forbidden_error"`

        - `required string Message`

          Human-readable error description.

        - `required string? RepositoryUrl`

          URL of the repository that could not be cloned. Null when it could not be identified.

        - `required RetryStatus RetryStatus`

          What the client should do next. Always `retrying`: the session keeps running without the repository.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsRepositoryNotFoundError`

        The repository host reported the repository as not found.

        - `JsonElement Type = "repository_not_found_error"`

        - `required string Message`

          Human-readable error description.

        - `required string? RepositoryUrl`

          URL of the repository that could not be cloned. Null when it could not be identified.

        - `required RetryStatus RetryStatus`

          What the client should do next. Always `retrying`: the session keeps running without the repository.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsRepositoryCheckoutError`

        The requested branch or commit does not exist in the repository.

        - `JsonElement Type = "repository_checkout_error"`

        - `required string Message`

          Human-readable error description.

        - `required string? RepositoryUrl`

          URL of the repository that could not be cloned. Null when it could not be identified.

        - `required RetryStatus RetryStatus`

          What the client should do next. Always `retrying`: the session keeps running without the repository.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsRepositoryCloneError`

        The repository could not be cloned.

        - `JsonElement Type = "repository_clone_error"`

        - `required string Message`

          Human-readable error description.

        - `required string? RepositoryUrl`

          URL of the repository that could not be cloned. Null when it could not be identified.

        - `required RetryStatus RetryStatus`

          What the client should do next. Always `retrying`: the session keeps running without the repository.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the error occurred.

      format: date-time

  - `class BetaManagedAgentsSessionStatusRescheduledEvent`

    Indicates the session is recovering from an error state and is rescheduled for execution.

    - `JsonElement Type = "session.status_rescheduled"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of status change.

      format: date-time

  - `class BetaManagedAgentsSessionStatusRunningEvent`

    Indicates the session is actively running and the agent is working.

    - `JsonElement Type = "session.status_running"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of status change.

      format: date-time

  - `class BetaManagedAgentsSessionStatusIdleEvent`

    Indicates the agent has paused and is awaiting user input.

    - `JsonElement Type = "session.status_idle"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of status change.

      format: date-time

    - `required BetaManagedAgentsSessionRefusalStopDetails? StopDetails`

      Structured information about why the session stopped. `null` when there is nothing more to report.

      - `JsonElement Type = "refusal"`

      - `required Category? Category`

        The policy category that triggered the refusal, or `null` when there is no named category. New values can be added over time.

        - `Cyber("cyber")`

        - `Bio("bio")`

        - `FrontierLlm("frontier_llm")`

        - `ReasoningExtraction("reasoning_extraction")`

        - `GeneralHarms("general_harms")`

      - `required string? Explanation`

        Human-readable explanation of the refusal, or `null` when none is available. The wording can change, so do not parse it.

    - `required StopReason StopReason`

      - `class BetaManagedAgentsSessionEndTurn`

        The agent completed its turn naturally and is ready for the next user message.

        - `JsonElement Type = "end_turn"`

      - `class BetaManagedAgentsSessionRequiresAction`

        The agent is idle waiting on one or more blocking user-input events (tool confirmation, custom tool result, etc.). Resolving all of them transitions the session back to running.

        - `JsonElement Type = "requires_action"`

        - `required IReadOnlyList<string> EventIds`

          The ids of events the agent is blocked on. Resolving fewer than all re-emits `session.status_idle` with the remainder.

      - `class BetaManagedAgentsSessionRetriesExhausted`

        The turn ended because repeated errors exhausted the retry budget or an error escalated to `retry_status: 'exhausted'`.

        - `JsonElement Type = "retries_exhausted"`

      - `class BetaManagedAgentsSessionBudgetReached`

        The agent stopped because the session's tracked list cost reached its budget, or because its usage includes a model with no list price (which the budget cannot measure). Raise the budget to continue — or, if raising is rejected because a model has no list price, remove the budget.

        - `JsonElement Type = "budget_reached"`

      - `class BetaManagedAgentsSessionRefusal`

        The turn ended because the model's response was refused, for example by a safety classifier.

        - `JsonElement Type = "refusal"`

  - `class BetaManagedAgentsSessionStatusTerminatedEvent`

    Indicates the session has terminated, either due to an error or completion.

    - `JsonElement Type = "session.status_terminated"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of status change.

      format: date-time

  - `class BetaManagedAgentsSessionThreadCreatedEvent`

    Emitted when a child thread is created. Written to the parent thread's output stream so clients observing the session see child creation.

    - `JsonElement Type = "session.thread_created"`

    - `required string ID`

      Unique identifier for this event.

    - `required string AgentName`

      Name of the callable agent the thread runs.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the thread was created.

      format: date-time

    - `required string SessionThreadID`

      Public `sthr_` ID of the newly created thread.

    - `required string? WorkflowRunID`

      Identifier of the workflow run that created the thread, or `null` for any other thread.

  - `class BetaManagedAgentsSpanOutcomeEvaluationStartEvent`

    Emitted when an outcome evaluation cycle begins.

    - `JsonElement Type = "span.outcome_evaluation_start"`

    - `required string ID`

      Unique identifier for this event.

    - `required int Iteration`

      0-indexed revision cycle. 0 is the first evaluation; 1 is the re-evaluation after the first revision; etc.

      format: int32

    - `required string OutcomeID`

      The `outc_` ID of the outcome being evaluated.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when outcome evaluation started.

      format: date-time

  - `class BetaManagedAgentsSpanOutcomeEvaluationEndEvent`

    Emitted when an outcome evaluation cycle completes. Carries the verdict and aggregate token usage. A verdict of `needs_revision` means another evaluation cycle follows; `satisfied`, `max_iterations_reached`, `failed`, or `interrupted` are terminal — no further evaluation cycles follow.

    - `JsonElement Type = "span.outcome_evaluation_end"`

    - `required string ID`

      Unique identifier for this event.

    - `required string Explanation`

      Human-readable explanation of the verdict. For `needs_revision`, describes which criteria failed and why.

    - `required int Iteration`

      0-indexed revision cycle, matching the corresponding `span.outcome_evaluation_start`.

      format: int32

    - `required string OutcomeEvaluationStartID`

      The id of the corresponding `span.outcome_evaluation_start` event.

    - `required string OutcomeID`

      The `outc_` ID of the outcome being evaluated.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when outcome evaluation ended.

      format: date-time

    - `required string Result`

      Evaluation verdict. 'satisfied': criteria met, session goes idle. 'needs_revision': criteria not met, another revision cycle follows. 'max_iterations_reached': evaluation budget exhausted with criteria still unmet — one final acknowledgment turn follows before the session goes idle, but no further evaluation runs. 'failed': grader determined the rubric does not apply to the deliverables. 'interrupted': user sent an interrupt while evaluation was in progress.

    - `required BetaManagedAgentsSpanModelUsage Usage`

      Aggregate token usage for this evaluation cycle. Sums across all grader model requests within the cycle.

      - `required int CacheCreationInputTokens`

        Tokens used to create prompt cache in this request.

        format: int32

      - `required int CacheReadInputTokens`

        Tokens read from prompt cache in this request.

        format: int32

      - `required int InputTokens`

        Input tokens consumed by this request.

        format: int32

      - `required int OutputTokens`

        Output tokens generated by this request.

        format: int32

      - `Speed? Speed`

        Inference speed tier this request actually ran at. Mirrors `usage.speed` on /v1/messages. Only present when the fast-mode beta is active.

        - `Standard("standard")`

        - `Fast("fast")`

  - `class BetaManagedAgentsSpanModelRequestStartEvent`

    Emitted when a model request is initiated by the agent.

    - `JsonElement Type = "span.model_request_start"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the model request started.

      format: date-time

  - `class BetaManagedAgentsSpanModelRequestEndEvent`

    Emitted when a model request completes.

    - `JsonElement Type = "span.model_request_end"`

    - `required string ID`

      Unique identifier for this event.

    - `required bool? IsError`

      Whether the model request resulted in an error.

    - `required string ModelRequestStartID`

      The id of the corresponding `span.model_request_start` event.

    - `required BetaManagedAgentsSpanModelUsage ModelUsage`

      Token usage for this model request.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the model request completed.

      format: date-time

  - `class BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent`

    Periodic heartbeat emitted while an outcome evaluation cycle is in progress. Distinguishes 'evaluation is actively running' from 'evaluation is stuck' between the corresponding `span.outcome_evaluation_start` and `span.outcome_evaluation_end` events.

    - `JsonElement Type = "span.outcome_evaluation_ongoing"`

    - `required string ID`

      Unique identifier for this event.

    - `required int Iteration`

      0-indexed revision cycle, matching the corresponding `span.outcome_evaluation_start`.

      format: int32

    - `required string OutcomeID`

      The `outc_` ID of the outcome being evaluated.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this heartbeat was emitted.

      format: date-time

  - `class BetaManagedAgentsUserDefineOutcomeEvent`

    Echo of a `user.define_outcome` input event. Carries the server-generated `outcome_id` that subsequent `span.outcome_evaluation_*` events reference.

    - `JsonElement Type = "user.define_outcome"`

    - `required string ID`

      Unique identifier for this event.

    - `required string Description`

      What the agent should produce. Copied from the input event.

    - `required int? MaxIterations`

      Evaluate-then-revise cycles before giving up. Default 3, max 20.

      format: int32

    - `required string OutcomeID`

      Server-generated `outc_` ID for this outcome. Referenced by `span.outcome_evaluation_*` events and the session's `outcome_evaluations` list.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the outcome was accepted.

      format: date-time

    - `required Rubric Rubric`

      How to grade the outcome. File rubrics are currently resolved to their text content; clients should handle both variants.

      - `class BetaManagedAgentsFileRubric`

        Rubric referenced by a file uploaded via the Files API.

        - `JsonElement Type = "file"`

        - `required string FileID`

          ID of the rubric file.

      - `class BetaManagedAgentsTextRubric`

        Rubric content provided inline as text.

        - `JsonElement Type = "text"`

        - `required string Content`

          Rubric content. Plain text or markdown — the grader treats it as freeform text.

  - `class BetaManagedAgentsSessionDeletedEvent`

    Emitted when a session has been deleted. Terminates any active event stream — no further events will be emitted for this session.

    - `JsonElement Type = "session.deleted"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the session was deleted.

      format: date-time

  - `class BetaManagedAgentsSessionThreadStatusRunningEvent`

    A session thread has begun executing. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.

    - `JsonElement Type = "session.thread_status_running"`

    - `required string ID`

      Unique identifier for this event.

    - `required string AgentName`

      Name of the agent the thread runs.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of the status transition.

      format: date-time

    - `required string SessionThreadID`

      Public sthr_ ID of the thread that started running.

  - `class BetaManagedAgentsSessionThreadStatusIdleEvent`

    A session thread has yielded and is awaiting input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.

    - `JsonElement Type = "session.thread_status_idle"`

    - `required string ID`

      Unique identifier for this event.

    - `required string AgentName`

      Name of the agent the thread runs.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of the status transition.

      format: date-time

    - `required string SessionThreadID`

      Public sthr_ ID of the thread that went idle.

    - `required BetaManagedAgentsSessionRefusalStopDetails? StopDetails`

      Structured information about why the thread stopped. `null` when there is nothing more to report.

    - `required StopReason StopReason`

      - `class BetaManagedAgentsSessionEndTurn`

        The agent completed its turn naturally and is ready for the next user message.

      - `class BetaManagedAgentsSessionRequiresAction`

        The agent is idle waiting on one or more blocking user-input events (tool confirmation, custom tool result, etc.). Resolving all of them transitions the session back to running.

      - `class BetaManagedAgentsSessionRetriesExhausted`

        The turn ended because repeated errors exhausted the retry budget or an error escalated to `retry_status: 'exhausted'`.

      - `class BetaManagedAgentsSessionBudgetReached`

        The agent stopped because the session's tracked list cost reached its budget, or because its usage includes a model with no list price (which the budget cannot measure). Raise the budget to continue — or, if raising is rejected because a model has no list price, remove the budget.

      - `class BetaManagedAgentsSessionRefusal`

        The turn ended because the model's response was refused, for example by a safety classifier.

  - `class BetaManagedAgentsSessionThreadStatusTerminatedEvent`

    A session thread has terminated and will accept no further input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.

    - `JsonElement Type = "session.thread_status_terminated"`

    - `required string ID`

      Unique identifier for this event.

    - `required string AgentName`

      Name of the agent the thread runs.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of the status transition.

      format: date-time

    - `required string SessionThreadID`

      Public sthr_ ID of the thread that terminated.

  - `class BetaManagedAgentsUserToolResultEvent`

    Event sent by the client providing the result of an agent-toolset tool execution. Only valid on `self_hosted` environments, where sandbox-routed tools are executed by the client rather than the server.

    - `JsonElement Type = "user.tool_result"`

    - `required string ID`

      Unique identifier for this event.

    - `required string ToolUseID`

      The id of the `agent.tool_use` event this result corresponds to, which can be found in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

    - `IReadOnlyList<Content> Content`

      The result content returned by the tool.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsSearchResultBlock`

        A block containing a web search result.

    - `bool? IsError`

      Whether the tool execution resulted in an error.

    - `DateTimeOffset? ProcessedAt`

      Timestamp when this result was processed.

      format: date-time

    - `string? SessionThreadID`

      Set by the server to the subagent thread this result was routed to. Omitted when it was routed to the primary thread.

  - `class BetaManagedAgentsSessionThreadStatusRescheduledEvent`

    A session thread hit a transient error and is retrying automatically. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.

    - `JsonElement Type = "session.thread_status_rescheduled"`

    - `required string ID`

      Unique identifier for this event.

    - `required string AgentName`

      Name of the agent the thread runs.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of the status transition.

      format: date-time

    - `required string SessionThreadID`

      Public sthr_ ID of the thread that is retrying.

  - `class BetaManagedAgentsSessionUpdatedEvent`

    Emitted when an UpdateSession request changed at least one field. Carries only the fields that changed; absent fields were not part of the update. The new configuration applies from the next turn.

    - `JsonElement Type = "session.updated"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the update was applied.

      format: date-time

    - `BetaManagedAgentsSessionAgent? Agent`

      The session's effective agent configuration after the update. Present only when the update changed `agent` (tools or mcp_servers); when present it is the full materialised snapshot, not a diff.

      - `JsonElement Type = "agent"`

      - `required string ID`

      - `required string? Description`

      - `required BetaManagedAgentsExecutionIdentity ExecutionIdentity`

        Execution principal snapshotted from the agent at session creation. Always present; `{"type": "service_account"}` when runs carry no customer-named principal.

        - `class BetaManagedAgentsAwsRoleExecutionIdentity`

          An AWS IAM role principal as returned in API responses.

          - `JsonElement Type = "aws_role"`

          - `required string RoleArn`

            The IAM role's ARN.

        - `class BetaManagedAgentsServiceAccountExecutionIdentity`

          The Anthropic-managed service account as returned in API responses.

          - `JsonElement Type = "service_account"`

      - `required IReadOnlyList<BetaManagedAgentsMcpServerUrlDefinition> McpServers`

        - `JsonElement Type = "url"`

        - `required string Name`

        - `required string Url`

      - `required BetaManagedAgentsModelConfig Model`

        Model identifier and configuration.

        - `required BetaManagedAgentsModel ID`

          The model that will power your agent.

          See [models](https://docs.anthropic.com/en/docs/models-overview) for additional details and options.

          - `ClaudeHaiku5_5("claude-haiku-5-5")`

            Fastest model for high-volume, real-time tasks

          - `ClaudeSonnet5_5("claude-sonnet-5-5")`

            Efficient model for coding and agents

          - `ClaudeOpus5_5("claude-opus-5-5")`

            Powerful intelligence for coding, knowledge work, and long-running agents

          - `ClaudeFable5_1("claude-fable-5-1")`

            Frontier intelligence for ambitious tasks across coding, scientific discovery, and enterprise workflows

          - `ClaudeSonnet5("claude-sonnet-5")`

            Efficient model for coding and agents

          - `ClaudeFable5("claude-fable-5")`

            Next generation of intelligence for the hardest knowledge work and coding problems

          - `ClaudeOpus5("claude-opus-5")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeOpus4_8("claude-opus-4-8")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeOpus4_7("claude-opus-4-7")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeOpus4_6("claude-opus-4-6")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeSonnet4_6("claude-sonnet-4-6")`

            Best combination of speed and intelligence

          - `ClaudeHaiku4_5("claude-haiku-4-5")`

          - `ClaudeHaiku4_5_20251001("claude-haiku-4-5-20251001")`

          - `ClaudeOpus4_5("claude-opus-4-5")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeOpus4_5_20251101("claude-opus-4-5-20251101")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeSonnet4_5("claude-sonnet-4-5")`

            **Deprecated**: Will reach end-of-life on November 30, 2026. Please migrate to claude-sonnet-5-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.

            High-performance model for agents and coding

          - `ClaudeSonnet4_5_20250929("claude-sonnet-4-5-20250929")`

            **Deprecated**: Will reach end-of-life on November 30, 2026. Please migrate to claude-sonnet-5-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.

            High-performance model for agents and coding

        - `Effort Effort`

          How hard Claude works on each inference call. One of `low`, `medium`, `high`, `xhigh`, `max`. Always present; resolved to the per-model default at save time when not supplied.

          - `class BetaManagedAgentsEffortLow`

            Low effort. Favors latency over reasoning depth.

            - `JsonElement Type = "low"`

          - `class BetaManagedAgentsEffortMedium`

            Medium effort. Balances latency and reasoning depth.

            - `JsonElement Type = "medium"`

          - `class BetaManagedAgentsEffortHigh`

            High effort. Favors reasoning depth.

            - `JsonElement Type = "high"`

          - `class BetaManagedAgentsEffortXhigh`

            Extra-high effort. Not all models accept this level.

            - `JsonElement Type = "xhigh"`

          - `class BetaManagedAgentsEffortMax`

            Maximum effort. Favors reasoning depth over latency.

            - `JsonElement Type = "max"`

        - `string InferenceGeo`

          Geographic region for model inference. When unset, requests fall through to the workspace's default_inference_geo.

        - `Speed Speed`

          Inference speed mode. `fast` provides significantly faster output token generation at premium pricing. Defaults to `standard`. Not all models support `fast`; invalid combinations are rejected at create time.

          - `Standard("standard")`

          - `Fast("fast")`

      - `required BetaManagedAgentsSessionMultiagent? Multiagent`

        Resolved multiagent orchestration configuration. Null when the agent is single-threaded.

        - `class BetaManagedAgentsSessionMultiagentCoordinator`

          Resolved coordinator topology with full agent definitions for each roster member.

          - `JsonElement Type = "coordinator"`

          - `required IReadOnlyList<Agent> Agents`

            Full `agent` definitions the coordinator may spawn as session threads.

            - `class BetaManagedAgentsSessionThreadAgent`

              Resolved `agent` definition for a single `session_thread`. Snapshot of the agent at thread creation time. The multiagent roster is not repeated here; read it from `Session.agent`.

              - `JsonElement Type = "agent"`

              - `required string ID`

              - `required string? Description`

              - `required BetaManagedAgentsExecutionIdentity ExecutionIdentity`

                Execution principal snapshotted from the agent at session creation. Always present; `{"type": "service_account"}` when runs carry no customer-named principal.

              - `required IReadOnlyList<BetaManagedAgentsMcpServerUrlDefinition> McpServers`

                - `JsonElement Type = "url"`

                - `required string Name`

                - `required string Url`

              - `required BetaManagedAgentsModelConfig Model`

                Model identifier and configuration.

              - `required string Name`

              - `required IReadOnlyList<Skill> Skills`

                - `class BetaManagedAgentsAnthropicSkill`

                  A resolved Anthropic-managed skill.

                  - `JsonElement Type = "anthropic"`

                  - `required string SkillID`

                  - `required string Version`

                - `class BetaManagedAgentsCustomSkill`

                  A resolved user-created custom skill.

                  - `JsonElement Type = "custom"`

                  - `required string SkillID`

                  - `required string Version`

              - `required string? System`

              - `required IReadOnlyList<Tool> Tools`

                - `class BetaManagedAgentsAgentToolset20260401`

                  - `JsonElement Type = "agent_toolset_20260401"`

                  - `required IReadOnlyList<BetaManagedAgentsAgentToolConfig> Configs`

                    - `class BetaManagedAgentsBashToolConfig`

                      Configuration for the bash tool.

                      - `JsonElement Type = "bash"`

                      - `required bool Enabled`

                      - `JsonElement Name = "bash"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                          - `JsonElement Type = "always_allow"`

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                          - `JsonElement Type = "always_ask"`

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                          - `JsonElement Type = "auto"`

                    - `class BetaManagedAgentsEditToolConfig`

                      Configuration for the edit tool.

                      - `JsonElement Type = "edit"`

                      - `required bool Enabled`

                      - `JsonElement Name = "edit"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                    - `class BetaManagedAgentsReadToolConfig`

                      Configuration for the read tool.

                      - `JsonElement Type = "read"`

                      - `required bool Enabled`

                      - `JsonElement Name = "read"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                    - `class BetaManagedAgentsWriteToolConfig`

                      Configuration for the write tool.

                      - `JsonElement Type = "write"`

                      - `required bool Enabled`

                      - `JsonElement Name = "write"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                    - `class BetaManagedAgentsGlobToolConfig`

                      Configuration for the glob tool.

                      - `JsonElement Type = "glob"`

                      - `required bool Enabled`

                      - `JsonElement Name = "glob"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                    - `class BetaManagedAgentsGrepToolConfig`

                      Configuration for the grep tool.

                      - `JsonElement Type = "grep"`

                      - `required bool Enabled`

                      - `JsonElement Name = "grep"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                    - `class BetaManagedAgentsWebFetchToolConfig`

                      Configuration for the web_fetch tool.

                      - `JsonElement Type = "web_fetch"`

                      - `required bool Enabled`

                      - `JsonElement Name = "web_fetch"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                      - `required BetaManagedAgentsWebFetchUrlSources? UrlSources`

                        Which sources contribute URLs the tool may fetch, always in the object form. Null when not set, which allows every source.

                        - `required BetaManagedAgentsWebFetchUrlSourceToolFilter? ClientToolResults`

                          Which custom tools' results contribute URLs that may be fetched. Null when not set, which allows every custom tool's results.

                          - `class BetaManagedAgentsWebFetchUrlSourceAll`

                            Every URL from this source may be fetched. This is the default.

                            - `JsonElement Type = "all"`

                          - `class BetaManagedAgentsWebFetchUrlSourceNone`

                            This source contributes no URLs that may be fetched.

                            - `JsonElement Type = "none"`

                          - `class BetaManagedAgentsWebFetchUrlSourceOnly`

                            Only the named tools' results contribute URLs that may be fetched.

                            - `JsonElement Type = "only"`

                            - `required IReadOnlyList<BetaManagedAgentsWebFetchUrlSourceToolReference> Tools`

                              The tools whose results contribute. Between 1 and 128 entries, each with a different name. An empty list is rejected; use "none" to allow no tool's results.

                              - `JsonElement Type = "tool_reference"`

                                Must be "tool_reference".

                              - `required string Name`

                                Name of the tool. Compared exactly, so upper and lower case letters are different.

                                minLength: 1, maxLength: 128

                          - `class BetaManagedAgentsWebFetchUrlSourceExcept`

                            Every tool's results contribute URLs that may be fetched, except the named tools' results.

                            - `JsonElement Type = "except"`

                            - `required IReadOnlyList<BetaManagedAgentsWebFetchUrlSourceToolReference> Tools`

                              The tools whose results do not contribute. Between 1 and 128 entries, each with a different name. An empty list is rejected; use "all" to leave out no tool's results.

                              - `JsonElement Type = "tool_reference"`

                                Must be "tool_reference".

                              - `required string Name`

                                Name of the tool. Compared exactly, so upper and lower case letters are different.

                                minLength: 1, maxLength: 128

                        - `required BetaManagedAgentsWebFetchUrlSourceToolFilter? ServerToolResults`

                          Which of the web_search and web_fetch tools' results contribute URLs that may be fetched. Null when not set, which allows both.

                        - `required BetaManagedAgentsWebFetchUrlSourceUserInput? UserInput`

                          Whether URLs in the text of user messages may be fetched. Null when not set, which allows them.

                          - `class BetaManagedAgentsWebFetchUrlSourceAll`

                            Every URL from this source may be fetched. This is the default.

                          - `class BetaManagedAgentsWebFetchUrlSourceNone`

                            This source contributes no URLs that may be fetched.

                      - `IReadOnlyList<string> AllowedDomains`

                      - `IReadOnlyList<string> BlockedDomains`

                      - `int? MaxContentTokens`

                        format: int32

                    - `class BetaManagedAgentsWebSearchToolConfig`

                      Configuration for the web_search tool.

                      - `JsonElement Type = "web_search"`

                      - `required bool Enabled`

                      - `JsonElement Name = "web_search"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                      - `IReadOnlyList<string> AllowedDomains`

                      - `IReadOnlyList<string> BlockedDomains`

                      - `BetaManagedAgentsUserLocation? UserLocation`

                        Approximate user location for search result localization.

                        - `JsonElement Type = "approximate"`

                          Location precision. Only "approximate" is supported.

                        - `string? City`

                          City name.

                          minLength: 1, maxLength: 255

                        - `string? Country`

                          Two-letter ISO 3166-1 country code, uppercase.

                          pattern: ^[A-Z]{2}$

                        - `string? Region`

                          Region or state name.

                          minLength: 1, maxLength: 255

                        - `string? Timezone`

                          IANA timezone identifier, e.g. "America/Los_Angeles".

                          minLength: 1, maxLength: 255

                  - `required BetaManagedAgentsAgentToolsetDefaultConfig DefaultConfig`

                    Resolved default configuration for agent tools.

                    - `required bool Enabled`

                    - `required PermissionPolicy PermissionPolicy`

                      Permission policy for tool execution.

                      - `class BetaManagedAgentsAlwaysAllowPolicy`

                        Tool calls are automatically approved without user confirmation.

                      - `class BetaManagedAgentsAlwaysAskPolicy`

                        Tool calls require user confirmation before execution.

                      - `class BetaManagedAgentsAutoPolicy`

                        The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                - `class BetaManagedAgentsMcpToolset`

                  - `JsonElement Type = "mcp_toolset"`

                  - `required IReadOnlyList<BetaManagedAgentsMcpToolConfig> Configs`

                    - `required bool Enabled`

                    - `required string Name`

                    - `required PermissionPolicy PermissionPolicy`

                      Permission policy for tool execution.

                      - `class BetaManagedAgentsAlwaysAllowPolicy`

                        Tool calls are automatically approved without user confirmation.

                      - `class BetaManagedAgentsAlwaysAskPolicy`

                        Tool calls require user confirmation before execution.

                      - `class BetaManagedAgentsAutoPolicy`

                        The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                  - `required BetaManagedAgentsMcpToolsetDefaultConfig DefaultConfig`

                    Resolved default configuration for all tools from an MCP server.

                    - `required bool Enabled`

                    - `required PermissionPolicy PermissionPolicy`

                      Permission policy for tool execution.

                      - `class BetaManagedAgentsAlwaysAllowPolicy`

                        Tool calls are automatically approved without user confirmation.

                      - `class BetaManagedAgentsAlwaysAskPolicy`

                        Tool calls require user confirmation before execution.

                      - `class BetaManagedAgentsAutoPolicy`

                        The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                  - `required string McpServerName`

                - `class BetaManagedAgentsCustomTool`

                  A custom tool as returned in API responses.

                  - `JsonElement Type = "custom"`

                  - `required string Description`

                  - `required BetaManagedAgentsCustomToolInputSchema InputSchema`

                    JSON Schema for custom tool input parameters.

                    - `JsonElement Type = "object"`

                    - `IReadOnlyDictionary<string, JsonElement>? Properties`

                    - `IReadOnlyList<string>? Required`

                  - `required string Name`

              - `required int Version`

                format: int32

            - `class BetaManagedAgentsAdvisor`

              Platform advisor roster entry: a model the session's primary thread may consult mid-turn.

              - `JsonElement Type = "advisor"`

              - `required string Model`

                The advisor model id.

        - `class BetaManagedAgentsSessionMultiagent20261001`

          Resolved multiagent configuration with three members, as copied to the `session` at creation.

          - `JsonElement Type = "multiagent_20261001"`

          - `required BetaManagedAgentsMultiagentAdvisor Advisor`

            Whether the session's primary thread can consult an advisor model.

            - `class BetaManagedAgentsMultiagentAdvisorEnabled`

              The session's primary thread can consult `model` mid-turn.

              - `JsonElement Type = "enabled"`

              - `required string Model`

                The advisor model id.

            - `class BetaManagedAgentsMultiagentAdvisorDisabled`

              The agent has no advisor.

              - `JsonElement Type = "disabled"`

          - `required BetaManagedAgentsSessionMultiagentSubagents Subagents`

            Whether the agent can spawn session threads.

            - `class BetaManagedAgentsSessionMultiagentSubagentsEnabled`

              The agent can spawn session threads.

              - `JsonElement Type = "enabled"`

              - `required BetaManagedAgentsMultiagentInlineAgents InlineAgents`

                Whether the agent can define inline agents, which are not saved, when it spawns session threads.

                - `class BetaManagedAgentsMultiagentInlineAgentsEnabled`

                  The agent can define inline agents.

                  - `JsonElement Type = "enabled"`

                - `class BetaManagedAgentsMultiagentInlineAgentsDisabled`

                  The agent cannot define inline agents.

                  - `JsonElement Type = "disabled"`

              - `required IReadOnlyList<BetaManagedAgentsSessionThreadAgent> PredefinedAgents`

                Full `agent` definitions of the predefined agents, which are saved agents that this agent can spawn as session threads.

                - `JsonElement Type = "agent"`

                - `required string ID`

                - `required string? Description`

                - `required BetaManagedAgentsExecutionIdentity ExecutionIdentity`

                  Execution principal snapshotted from the agent at session creation. Always present; `{"type": "service_account"}` when runs carry no customer-named principal.

                - `required IReadOnlyList<BetaManagedAgentsMcpServerUrlDefinition> McpServers`

                - `required BetaManagedAgentsModelConfig Model`

                  Model identifier and configuration.

                - `required string Name`

                - `required IReadOnlyList<Skill> Skills`

                - `required string? System`

                - `required IReadOnlyList<Tool> Tools`

                - `required int Version`

                  format: int32

            - `class BetaManagedAgentsMultiagentSubagentsDisabled`

              The agent cannot spawn session threads.

              - `JsonElement Type = "disabled"`

          - `required BetaManagedAgentsSessionMultiagentWorkflows Workflows`

            Whether the agent can start workflow runs.

            - `class BetaManagedAgentsSessionMultiagentWorkflowsEnabled`

              The agent can start workflow runs.

              - `JsonElement Type = "enabled"`

              - `required BetaManagedAgentsMultiagentInlineAgents InlineAgents`

                Whether a run's plan can define inline agents, which are not saved.

              - `required IReadOnlyList<BetaManagedAgentsSessionThreadAgent> PredefinedAgents`

                Full `agent` definitions of the predefined agents, which are saved agents that a run's plan can use.

                - `JsonElement Type = "agent"`

                - `required string ID`

                - `required string? Description`

                - `required BetaManagedAgentsExecutionIdentity ExecutionIdentity`

                  Execution principal snapshotted from the agent at session creation. Always present; `{"type": "service_account"}` when runs carry no customer-named principal.

                - `required IReadOnlyList<BetaManagedAgentsMcpServerUrlDefinition> McpServers`

                - `required BetaManagedAgentsModelConfig Model`

                  Model identifier and configuration.

                - `required string Name`

                - `required IReadOnlyList<Skill> Skills`

                - `required string? System`

                - `required IReadOnlyList<Tool> Tools`

                - `required int Version`

                  format: int32

            - `class BetaManagedAgentsMultiagentWorkflowsDisabled`

              The agent cannot start workflow runs.

              - `JsonElement Type = "disabled"`

      - `required string Name`

      - `required IReadOnlyList<Skill> Skills`

        - `class BetaManagedAgentsAnthropicSkill`

          A resolved Anthropic-managed skill.

        - `class BetaManagedAgentsCustomSkill`

          A resolved user-created custom skill.

      - `required string? System`

      - `required IReadOnlyList<Tool> Tools`

        - `class BetaManagedAgentsAgentToolset20260401`

        - `class BetaManagedAgentsMcpToolset`

        - `class BetaManagedAgentsCustomTool`

          A custom tool as returned in API responses.

      - `required int Version`

        format: int32

    - `BetaManagedAgentsBudgetLimit? Budget`

      The session's budget after the update: the new budget when set or replaced, or null when the update removed it. Present only when the update changed the budget.

      - `JsonElement Type = "limit"`

      - `required BetaMonetaryAmount MaxListCost`

        Maximum list cost the session may accrue. List price is used regardless of any negotiated discount, so the cap fires at or before the actual charge.

        - `required string Amount`

          Amount in minor units of the currency, as an integer decimal string with no leading zeros: "2500" is $25.00 and "50" is fifty cents. A string rather than a number so no float rounding is ever applied.

          pattern: ^(0|[1-9]\d*)$

        - `required BetaCurrency Currency`

          Uppercase ISO-4217 currency code. `USD` is the only currency currently supported; the accepted set is closed and grows only when a new currency is priced.

    - `IReadOnlyDictionary<string, string> Metadata`

      The session's full metadata bag after the update. Present when the update set non-empty metadata; absent when metadata was unchanged or cleared to empty.

    - `string? Title`

      The session's new title. Present only when the update changed it.

  - `class BetaManagedAgentsSystemMessageEvent`

    A mid-conversation system message event. Carries system-role content that is appended to the session as a `role: "system"` turn.

    - `JsonElement Type = "system.message"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyList<BetaManagedAgentsSystemContentBlock> Content`

      System content blocks. Text-only.

      - `JsonElement Type = "text"`

      - `required string Text`

        The text content.

        minLength: 1

    - `DateTimeOffset? ProcessedAt`

      Timestamp when this system message was processed.

      format: date-time

  - `class BetaManagedAgentsSessionUsageEvent`

    Periodic snapshot of the session's cumulative usage and tracked list cost.

    - `JsonElement Type = "session.usage"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the snapshot was taken.

      format: date-time

    - `required BetaManagedAgentsSessionUsageSnapshot Usage`

      The session's cumulative usage at the snapshot time.

      - `double ActiveSeconds`

        Cumulative time in seconds during which the session had at least one thread in running status. Overlapping activity from concurrent threads is counted once. This is the duration the session's runtime cost is priced on.

        format: double

      - `BetaManagedAgentsCacheCreationUsage CacheCreation`

        Tokens used to create prompt cache entries, broken down by cache TTL.

        - `int Ephemeral1hInputTokens`

          Tokens used to create 1-hour ephemeral cache entries.

          format: int32

        - `int Ephemeral5mInputTokens`

          Tokens used to create 5-minute ephemeral cache entries.

          format: int32

      - `int CacheReadInputTokens`

        Total tokens read from prompt cache.

        format: int32

      - `int InputTokens`

        Total input tokens consumed across all turns.

        format: int32

      - `BetaMonetaryAmount ListCost`

        Cumulative list cost of the session across all turns, priced at public list rates.

      - `int OutputTokens`

        Total output tokens generated across all turns.

        format: int32

      - `BetaManagedAgentsServerToolUsage ServerToolUse`

        Cumulative server-executed tool usage across all turns.

        - `int WebFetchRequests`

          Number of server-executed web fetch requests.

          format: int32

        - `int WebSearchRequests`

          Number of server-executed web search requests.

          format: int32

    - `BetaManagedAgentsBudgetLimit? Budget`

      The session's configured budget at the snapshot time, or null when the session has no budget.

  - `class BetaManagedAgentsWorkflowRunCreatedEvent`

    A workflow run was created. A workflow run is background work that the session's agent starts. Emitted once per run, before the run's other `workflow_run.*` events.

    - `JsonElement Type = "workflow_run.created"`

    - `required string ID`

      Unique identifier for this event.

    - `required string? Description`

      Description that the agent gave the run, passed on as written, or `null` if it gave none.

    - `required string Name`

      Name that the agent gave the run, passed on as written, or a name that the server assigned.

    - `required IReadOnlyList<BetaManagedAgentsWorkflowRunPhase> Phases`

      The phases that the run's plan declares, in the plan's order. Can be empty.

      - `required string ID`

        Unique identifier for the phase.

      - `required string? Description`

        Description that the agent gave the phase, passed on as written, or `null` if it gave none.

      - `required string Name`

        Name that the agent gave the phase, passed on as written.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

  - `class BetaManagedAgentsWorkflowRunStatusEndedEvent`

    A workflow run ended. Emitted once per run, as the last of the run's `workflow_run.*` events.

    - `JsonElement Type = "workflow_run.status_ended"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required BetaManagedAgentsWorkflowRunResult Result`

      How the run ended.

      - `class BetaManagedAgentsWorkflowRunResultCompleted`

        The run's plan, a program that the agent wrote, finished. This does not say whether the work succeeded.

        - `JsonElement Type = "completed"`

      - `class BetaManagedAgentsWorkflowRunResultError`

        The run failed or reached its time limit.

        - `JsonElement Type = "error"`

        - `required BetaManagedAgentsWorkflowRunError Error`

          Why the run did not finish.

          - `class BetaManagedAgentsTimeoutWorkflowRunError`

            The run reached its time limit.

            - `JsonElement Type = "timeout_error"`

            - `required string Message`

              Short explanation written by the server. It never contains content from the run or its agents.

          - `class BetaManagedAgentsProgramWorkflowRunError`

            The plan, a program that the agent wrote, failed, or the server refused it.

            - `JsonElement Type = "program_error"`

            - `required string Message`

              Short explanation written by the server. It never contains content from the run or its agents.

          - `class BetaManagedAgentsUnknownWorkflowRunError`

            A failure that has no type of its own.

            - `JsonElement Type = "unknown_error"`

            - `required string Message`

              Short explanation written by the server. It never contains content from the run or its agents.

          - `class BetaManagedAgentsThreadLimitWorkflowRunError`

            The run exceeded the limit on the number of threads that a run can create.

            - `JsonElement Type = "thread_limit_error"`

            - `required string Message`

              Short explanation written by the server. It never contains content from the run or its agents.

          - `class BetaManagedAgentsMaxWorkflowRunsWorkflowRunError`

            No run was created, because the session was at its limit of open workflow runs, which are runs that have not ended. Only `workflow_run.error` carries this type.

            - `JsonElement Type = "max_workflow_runs_error"`

            - `required string Message`

              Short explanation written by the server. It never contains content from the run or its agents.

      - `class BetaManagedAgentsWorkflowRunResultStopped`

        The agent stopped the run.

        - `JsonElement Type = "stopped"`

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

  - `class BetaManagedAgentsWorkflowRunPhaseStartedEvent`

    A workflow run's plan entered a phase.

    - `JsonElement Type = "workflow_run.phase_started"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

    - `required string WorkflowRunPhaseID`

      Identifier of the phase, as in `phases` on the run's `workflow_run.created` event.

  - `class BetaManagedAgentsWorkflowRunPhaseEndedEvent`

    A workflow run's plan left a phase, or the run's end closed it. Emitted once for every `workflow_run.phase_started` event, before the run's `workflow_run.status_ended` event. The event does not say whether the plan finished the phase's work, or why it left.

    - `JsonElement Type = "workflow_run.phase_ended"`

    - `required string ID`

      Unique identifier for this event.

    - `required string PhaseStartedID`

      Identifier of the `workflow_run.phase_started` event that opened the phase.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

    - `required string WorkflowRunPhaseID`

      Identifier of the phase, as in `phases` on the run's `workflow_run.created` event.

  - `class BetaManagedAgentsWorkflowRunStatusRunningEvent`

    A workflow run is running. Emitted when the run starts to execute, and each time it resumes after being idle. A run that starts idle emits `workflow_run.status_idle` first.

    - `JsonElement Type = "workflow_run.status_running"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

  - `class BetaManagedAgentsWorkflowRunStatusIdleEvent`

    A workflow run is idle. Emitted each time the run goes idle, whatever the cause. If the run ends while idle, no `workflow_run.status_running` comes between this event and its `workflow_run.status_ended`.

    - `JsonElement Type = "workflow_run.status_idle"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

  - `class BetaManagedAgentsWorkflowRunErrorEvent`

    A workflow run met an error, or an error kept a run from being created. A run that ends with a `result.type` of `error` emits this event before its `workflow_run.status_ended`, with the same `error`.

    - `JsonElement Type = "workflow_run.error"`

    - `required string ID`

      Unique identifier for this event.

    - `required BetaManagedAgentsWorkflowRunError Error`

      Why the run did not finish, or was not created.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string? WorkflowRunID`

      Identifier of the run that met the error, or `null` when the error kept a run from being created.

### Example

```csharp
using System;
using Anthropic.Models.Beta.Sessions.Events;

EventListParams parameters = new()
{
    SessionID = "sesn_011CZkZAtmR3yMPDzynEDxu7"
};

var page = await client.Beta.Sessions.Events.List(parameters);
await foreach (var item in page.Paginate())
{
    Console.WriteLine(item);
}
```

#### Response (200)

```json
{
  "data": [
    {
      "id": "sevt_011CZkZGPp1iBcp4kaQSihUm",
      "content": [
        {
          "text": "Where is my order #1234?",
          "type": "text"
        }
      ],
      "type": "user.message",
      "processed_at": "2026-03-15T10:00:00Z"
    },
    {
      "id": "sevt_011CZkZHPq1jCdq5mbRTjiVn",
      "content": [
        {
          "text": "Let me look up order #1234 for you.",
          "type": "text"
        }
      ],
      "processed_at": "2026-03-15T10:00:00Z",
      "type": "agent.message"
    }
  ],
  "next_page": "page_MjAyNS0wNS0xNFQwMDowMDowMFo="
}
```

## Send Events

`BetaManagedAgentsSendSessionEvents Beta.Sessions.Events.Send(parameters, cancellationToken = default)`

**POST** `/v1/sessions/{session_id}/events`

Send Events

### Parameters

- `EventSendParams parameters`

  - `required string sessionID` (path parameter)

  - `required IReadOnlyList<BetaManagedAgentsEventParams> events`

    Events to send to the `session`.

    - `class BetaManagedAgentsUserMessageEventParams`

      Parameters for sending a user message to the session.

      - `JsonElement Type = "user.message"`

      - `required IReadOnlyList<Content> Content`

        Array of content blocks for the user message.

        - `class BetaManagedAgentsTextBlock`

          Regular text content.

          - `JsonElement Type = "text"`

          - `required string Text`

            The text content.

            minLength: 1

        - `class BetaManagedAgentsImageBlock`

          Image content specified directly as base64 data or as a reference via a URL.

          - `JsonElement Type = "image"`

          - `required Source Source`

            The source of the image data.

            - `class BetaManagedAgentsBase64ImageSource`

              Base64-encoded image data.

              - `JsonElement Type = "base64"`

              - `required string Data`

                Base64-encoded image data.

                minLength: 1

              - `required string MediaType`

                MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif", "image/webp").

                minLength: 1

            - `class BetaManagedAgentsUrlImageSource`

              Image referenced by URL.

              - `JsonElement Type = "url"`

              - `required string Url`

                URL of the image to fetch.

                minLength: 1

            - `class BetaManagedAgentsFileImageSource`

              Image referenced by file ID.

              - `JsonElement Type = "file"`

              - `required string FileID`

                ID of a previously uploaded file.

                minLength: 1

        - `class BetaManagedAgentsDocumentBlock`

          Document content, either specified directly as base64 data, as text, or as a reference via a URL.

          - `JsonElement Type = "document"`

          - `required Source Source`

            The source of the document data.

            - `class BetaManagedAgentsBase64DocumentSource`

              Base64-encoded document data.

              - `JsonElement Type = "base64"`

              - `required string Data`

                Base64-encoded document data.

                minLength: 1

              - `required string MediaType`

                MIME type of the document (e.g., "application/pdf").

                minLength: 1

            - `class BetaManagedAgentsPlainTextDocumentSource`

              Plain text document content.

              - `JsonElement Type = "text"`

              - `required string Data`

                The plain text content.

                minLength: 1

              - `JsonElement MediaType = "text/plain"`

                MIME type of the text content. Must be "text/plain".

            - `class BetaManagedAgentsUrlDocumentSource`

              Document referenced by URL.

              - `JsonElement Type = "url"`

              - `required string Url`

                URL of the document to fetch.

                minLength: 1

            - `class BetaManagedAgentsFileDocumentSource`

              Document referenced by file ID.

              - `JsonElement Type = "file"`

              - `required string FileID`

                ID of a previously uploaded file.

                minLength: 1

          - `string? Context`

            Additional context about the document for the model.

          - `string? Title`

            The title of the document.

        - `class BetaManagedAgentsRedactedBlock`

          Placeholder for content withheld by Anthropic model policy.

          - `JsonElement Type = "redacted"`

    - `class BetaManagedAgentsUserInterruptEventParams`

      Parameters for sending an interrupt to pause the agent.

      - `JsonElement Type = "user.interrupt"`

      - `string? SessionThreadID`

        If absent, interrupts every non-archived thread in a multiagent session (or the primary alone in a single-agent session). If present, interrupts only the named thread.

    - `class BetaManagedAgentsUserToolConfirmationEventParams`

      Parameters for confirming or denying a tool execution request.

      - `JsonElement Type = "user.tool_confirmation"`

      - `required Result Result`

        The confirmation result: 'allow' or 'deny'.

        - `Allow("allow")`

        - `Deny("deny")`

      - `required string ToolUseID`

        The id of the `agent.tool_use` or `agent.mcp_tool_use` event this result corresponds to, which can be found in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

        minLength: 1, maxLength: 128

      - `string? DenyMessage`

        Optional message providing context for a 'deny' decision. Only allowed when result is 'deny'.

        maxLength: 10000

    - `class BetaManagedAgentsUserCustomToolResultEventParams`

      Parameters for providing the result of a custom tool execution.

      - `JsonElement Type = "user.custom_tool_result"`

      - `required string CustomToolUseID`

        The id of the `agent.custom_tool_use` event this result corresponds to. It is also listed in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

        minLength: 1, maxLength: 128

      - `IReadOnlyList<Content> Content`

        The result content returned by the tool.

        - `class BetaManagedAgentsTextBlock`

          Regular text content.

        - `class BetaManagedAgentsImageBlock`

          Image content specified directly as base64 data or as a reference via a URL.

        - `class BetaManagedAgentsDocumentBlock`

          Document content, either specified directly as base64 data, as text, or as a reference via a URL.

        - `class BetaManagedAgentsSearchResultBlock`

          A block containing a web search result.

          - `JsonElement Type = "search_result"`

          - `required BetaManagedAgentsSearchResultCitations Citations`

            Citation settings for this search result.

            - `required bool Enabled`

              Whether citations are enabled for this search result.

          - `required IReadOnlyList<BetaManagedAgentsSearchResultContent> Content`

            Array of text content blocks from the search result.

            - `JsonElement Type = "text"`

            - `required string Text`

              The text content.

              minLength: 1

          - `required string Source`

            The URL source of the search result.

            minLength: 1

          - `required string Title`

            The title of the search result.

            minLength: 1

      - `bool? IsError`

        Whether the tool execution resulted in an error.

    - `class BetaManagedAgentsUserDefineOutcomeEventParams`

      Parameters for defining an outcome the agent should work toward. The agent begins work on receipt.

      - `JsonElement Type = "user.define_outcome"`

      - `required string Description`

        What the agent should produce. This is the task specification.

      - `required Rubric Rubric`

        How to grade the outcome. Text or file reference.

        - `class BetaManagedAgentsFileRubricParams`

          Rubric referenced by a file uploaded via the Files API.

          - `JsonElement Type = "file"`

          - `required string FileID`

            ID of the rubric file.

        - `class BetaManagedAgentsTextRubricParams`

          Rubric content provided inline as text.

          - `JsonElement Type = "text"`

          - `required string Content`

            Rubric content. Plain text or markdown — the grader treats it as freeform text. Maximum 262144 characters.

            maxLength: 262144

      - `int? MaxIterations`

        Eval→revision cycles before giving up. Default 3, max 20.

        format: int32

    - `class BetaManagedAgentsUserToolResultEventParams`

      Parameters for providing the result of an agent-toolset tool execution. Only valid on `self_hosted` environments, where sandbox-routed tools are executed by the client rather than the server.

      - `JsonElement Type = "user.tool_result"`

      - `required string ToolUseID`

        The id of the `agent.tool_use` event this result corresponds to, which can be found in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

        minLength: 1, maxLength: 128

      - `IReadOnlyList<Content> Content`

        The result content returned by the tool.

        - `class BetaManagedAgentsTextBlock`

          Regular text content.

        - `class BetaManagedAgentsImageBlock`

          Image content specified directly as base64 data or as a reference via a URL.

        - `class BetaManagedAgentsDocumentBlock`

          Document content, either specified directly as base64 data, as text, or as a reference via a URL.

        - `class BetaManagedAgentsSearchResultBlock`

          A block containing a web search result.

      - `bool? IsError`

        Whether the tool execution resulted in an error.

    - `class BetaManagedAgentsSystemMessageEventParams`

      Privileged context for the accompanying turn and all subsequent turns, appended to the session's system context as a `role: "system"` turn rather than replacing the top-level system prompt. At most one per request: it must be the final event and immediately follow the `user.message`, `user.tool_result`, or `user.custom_tool_result` it accompanies. Only supported on models that accept mid-conversation system messages.

      - `JsonElement Type = "system.message"`

      - `required IReadOnlyList<BetaManagedAgentsSystemContentBlock> Content`

        System content blocks to append. Text-only.

        - `JsonElement Type = "text"`

        - `required string Text`

          The text content.

          minLength: 1

  - `IReadOnlyList<AnthropicBeta> betas` (header parameter)

    This endpoint is in beta: requests must send `managed-agents-2026-04-01` in this header.

    - `MessageBatches2024_09_24("message-batches-2024-09-24")`

    - `PromptCaching2024_07_31("prompt-caching-2024-07-31")`

    - `ComputerUse2024_10_22("computer-use-2024-10-22")`

    - `ComputerUse2025_01_24("computer-use-2025-01-24")`

    - `Pdfs2024_09_25("pdfs-2024-09-25")`

    - `TokenCounting2024_11_01("token-counting-2024-11-01")`

    - `TokenEfficientTools2025_02_19("token-efficient-tools-2025-02-19")`

    - `Output128k2025_02_19("output-128k-2025-02-19")`

    - `FilesApi2025_04_14("files-api-2025-04-14")`

    - `McpClient2025_04_04("mcp-client-2025-04-04")`

    - `McpClient2025_11_20("mcp-client-2025-11-20")`

    - `DevFullThinking2025_05_14("dev-full-thinking-2025-05-14")`

    - `InterleavedThinking2025_05_14("interleaved-thinking-2025-05-14")`

    - `CodeExecution2025_05_22("code-execution-2025-05-22")`

    - `ExtendedCacheTtl2025_04_11("extended-cache-ttl-2025-04-11")`

    - `Context1m2025_08_07("context-1m-2025-08-07")`

    - `ContextManagement2025_06_27("context-management-2025-06-27")`

    - `ModelContextWindowExceeded2025_08_26("model-context-window-exceeded-2025-08-26")`

    - `Skills2025_10_02("skills-2025-10-02")`

    - `FastMode2026_02_01("fast-mode-2026-02-01")`

    - `Output300k2026_03_24("output-300k-2026-03-24")`

    - `UserProfiles2026_03_24("user-profiles-2026-03-24")`

    - `UserProfiles2026_08_18("user-profiles-2026-08-18")`

    - `UserProfiles2026_09_04("user-profiles-2026-09-04")`

    - `AdvisorTool2026_03_01("advisor-tool-2026-03-01")`

    - `ManagedAgents2026_04_01("managed-agents-2026-04-01")`

    - `CacheDiagnosis2026_04_07("cache-diagnosis-2026-04-07")`

    - `Dreaming2026_04_21("dreaming-2026-04-21")`

    - `ThinkingTokenCount2026_05_13("thinking-token-count-2026-05-13")`

    - `ServerSideFallback2026_06_01("server-side-fallback-2026-06-01")`

    - `ServerSideFallback2026_07_01("server-side-fallback-2026-07-01")`

    - `FallbackCredit2026_06_01("fallback-credit-2026-06-01")`

    - `FallbackCredit2026_07_01("fallback-credit-2026-07-01")`

    - `AgentMemory2026_07_22("agent-memory-2026-07-22")`

    - `MidConversationToolChanges2026_07_01("mid-conversation-tool-changes-2026-07-01")`

    - `Compact2026_01_12("compact-2026-01-12")`

    - `ComputerUse2025_11_24("computer-use-2025-11-24")`

    - `McpTunnels2026_06_22("mcp-tunnels-2026-06-22")`

    - `StructuredOutputs2025_11_13("structured-outputs-2025-11-13")`

    - `TaskBudgets2026_03_13("task-budgets-2026-03-13")`

    - `ThinkingDisplayUpdates2026_08_18("thinking-display-updates-2026-08-18")`

    - `CEUserManagement2026_07_13("ce-user-management-2026-07-13")`

    - `MidConversationOutputConfig2026_07_01("mid-conversation-output-config-2026-07-01")`

    - `ThinkingBindingControls2026_08_01("thinking-binding-controls-2026-08-01")`

    - `MidConversationSystemClearAt2026_08_21("mid-conversation-system-clear-at-2026-08-21")`

    - `Compact2026_09_04("compact-2026-09-04")`

    - `InlineTools2026_09_15("inline-tools-2026-09-15")`

    - `McpClient2026_09_15("mcp-client-2026-09-15")`

    - `CEPlugins2026_09_01("ce-plugins-2026-09-01")`

    - `SpendLimitReads2026_09_26("spend-limit-reads-2026-09-26")`

    - `TelemetryDestinations2026_08_11("telemetry-destinations-2026-08-11")`

    - `Webhooks2026_10_07("webhooks-2026-10-07")`

    - `MessageThreads2026_08_12("message-threads-2026-08-12")`

    - `AnalyticsUsageCost2026_08_24("analytics-usage-cost-2026-08-24")`

    - `ExperimentalClaudeTag2026_10_21("experimental-claude-tag-2026-10-21")`

  - `string workspaceID` (header parameter)

    Optional header to select the Workspace for this request. The value is a Workspace ID (for example, `wrkspc_011CZkZaBF1tNoB5wlCeusgy`).

    Only needed for credentials that can act on more than one Workspace. A credential that belongs to a specific Workspace may omit it; if sent, it must match that Workspace.

### Returns

- `class BetaManagedAgentsSendSessionEvents`

  Events that were successfully sent to the session.

  - `IReadOnlyList<Data> Data`

    Sent events

    - `class BetaManagedAgentsUserMessageEvent`

      A user message event in the session conversation.

      - `JsonElement Type = "user.message"`

      - `required string ID`

        Unique identifier for this event.

      - `required IReadOnlyList<Content> Content`

        Array of content blocks comprising the user message.

        - `class BetaManagedAgentsTextBlock`

          Regular text content.

          - `JsonElement Type = "text"`

          - `required string Text`

            The text content.

            minLength: 1

        - `class BetaManagedAgentsImageBlock`

          Image content specified directly as base64 data or as a reference via a URL.

          - `JsonElement Type = "image"`

          - `required Source Source`

            The source of the image data.

            - `class BetaManagedAgentsBase64ImageSource`

              Base64-encoded image data.

              - `JsonElement Type = "base64"`

              - `required string Data`

                Base64-encoded image data.

                minLength: 1

              - `required string MediaType`

                MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif", "image/webp").

                minLength: 1

            - `class BetaManagedAgentsUrlImageSource`

              Image referenced by URL.

              - `JsonElement Type = "url"`

              - `required string Url`

                URL of the image to fetch.

                minLength: 1

            - `class BetaManagedAgentsFileImageSource`

              Image referenced by file ID.

              - `JsonElement Type = "file"`

              - `required string FileID`

                ID of a previously uploaded file.

                minLength: 1

        - `class BetaManagedAgentsDocumentBlock`

          Document content, either specified directly as base64 data, as text, or as a reference via a URL.

          - `JsonElement Type = "document"`

          - `required Source Source`

            The source of the document data.

            - `class BetaManagedAgentsBase64DocumentSource`

              Base64-encoded document data.

              - `JsonElement Type = "base64"`

              - `required string Data`

                Base64-encoded document data.

                minLength: 1

              - `required string MediaType`

                MIME type of the document (e.g., "application/pdf").

                minLength: 1

            - `class BetaManagedAgentsPlainTextDocumentSource`

              Plain text document content.

              - `JsonElement Type = "text"`

              - `required string Data`

                The plain text content.

                minLength: 1

              - `JsonElement MediaType = "text/plain"`

                MIME type of the text content. Must be "text/plain".

            - `class BetaManagedAgentsUrlDocumentSource`

              Document referenced by URL.

              - `JsonElement Type = "url"`

              - `required string Url`

                URL of the document to fetch.

                minLength: 1

            - `class BetaManagedAgentsFileDocumentSource`

              Document referenced by file ID.

              - `JsonElement Type = "file"`

              - `required string FileID`

                ID of a previously uploaded file.

                minLength: 1

          - `string? Context`

            Additional context about the document for the model.

          - `string? Title`

            The title of the document.

        - `class BetaManagedAgentsRedactedBlock`

          Placeholder for content withheld by Anthropic model policy.

          - `JsonElement Type = "redacted"`

      - `DateTimeOffset? ProcessedAt`

        Timestamp when the agent finished processing this message.

        format: date-time

    - `class BetaManagedAgentsUserInterruptEvent`

      An interrupt event that pauses agent execution and returns control to the user.

      - `JsonElement Type = "user.interrupt"`

      - `required string ID`

        Unique identifier for this event.

      - `DateTimeOffset? ProcessedAt`

        Timestamp when the interrupt was processed.

        format: date-time

      - `string? SessionThreadID`

        If absent, interrupts every non-archived thread in a multiagent session (or the primary alone in a single-agent session). If present, interrupts only the named thread.

    - `class BetaManagedAgentsUserToolConfirmationEvent`

      A tool confirmation event that approves or denies a pending tool execution.

      - `JsonElement Type = "user.tool_confirmation"`

      - `required string ID`

        Unique identifier for this event.

      - `required Result Result`

        The confirmation result: 'allow' or 'deny'.

        - `Allow("allow")`

        - `Deny("deny")`

      - `required string ToolUseID`

        The id of the `agent.tool_use` or `agent.mcp_tool_use` event this result corresponds to, which can be found in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

      - `string? DenyMessage`

        Optional message providing context for a 'deny' decision. Only allowed when result is 'deny'.

        maxLength: 10000

      - `DateTimeOffset? ProcessedAt`

        Timestamp when the confirmation was processed.

        format: date-time

      - `string? SessionThreadID`

        Set by the server to the subagent thread this confirmation was routed to. Omitted when it was routed to the primary thread.

    - `class BetaManagedAgentsUserCustomToolResultEvent`

      Event sent by the client providing the result of a custom tool execution.

      - `JsonElement Type = "user.custom_tool_result"`

      - `required string ID`

        Unique identifier for this event.

      - `required string CustomToolUseID`

        The id of the `agent.custom_tool_use` event this result corresponds to. It is also listed in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

      - `IReadOnlyList<Content> Content`

        The result content returned by the tool.

        - `class BetaManagedAgentsTextBlock`

          Regular text content.

        - `class BetaManagedAgentsImageBlock`

          Image content specified directly as base64 data or as a reference via a URL.

        - `class BetaManagedAgentsDocumentBlock`

          Document content, either specified directly as base64 data, as text, or as a reference via a URL.

        - `class BetaManagedAgentsSearchResultBlock`

          A block containing a web search result.

          - `JsonElement Type = "search_result"`

          - `required BetaManagedAgentsSearchResultCitations Citations`

            Citation settings for this search result.

            - `required bool Enabled`

              Whether citations are enabled for this search result.

          - `required IReadOnlyList<BetaManagedAgentsSearchResultContent> Content`

            Array of text content blocks from the search result.

            - `JsonElement Type = "text"`

            - `required string Text`

              The text content.

              minLength: 1

          - `required string Source`

            The URL source of the search result.

            minLength: 1

          - `required string Title`

            The title of the search result.

            minLength: 1

      - `bool? IsError`

        Whether the tool execution resulted in an error.

      - `DateTimeOffset? ProcessedAt`

        Timestamp when this result was processed.

        format: date-time

      - `string? SessionThreadID`

        Set by the server to the subagent thread this result was routed to. Omitted when it was routed to the primary thread.

    - `class BetaManagedAgentsUserDefineOutcomeEvent`

      Echo of a `user.define_outcome` input event. Carries the server-generated `outcome_id` that subsequent `span.outcome_evaluation_*` events reference.

      - `JsonElement Type = "user.define_outcome"`

      - `required string ID`

        Unique identifier for this event.

      - `required string Description`

        What the agent should produce. Copied from the input event.

      - `required int? MaxIterations`

        Evaluate-then-revise cycles before giving up. Default 3, max 20.

        format: int32

      - `required string OutcomeID`

        Server-generated `outc_` ID for this outcome. Referenced by `span.outcome_evaluation_*` events and the session's `outcome_evaluations` list.

      - `required DateTimeOffset ProcessedAt`

        Timestamp when the outcome was accepted.

        format: date-time

      - `required Rubric Rubric`

        How to grade the outcome. File rubrics are currently resolved to their text content; clients should handle both variants.

        - `class BetaManagedAgentsFileRubric`

          Rubric referenced by a file uploaded via the Files API.

          - `JsonElement Type = "file"`

          - `required string FileID`

            ID of the rubric file.

        - `class BetaManagedAgentsTextRubric`

          Rubric content provided inline as text.

          - `JsonElement Type = "text"`

          - `required string Content`

            Rubric content. Plain text or markdown — the grader treats it as freeform text.

    - `class BetaManagedAgentsUserToolResultEvent`

      Event sent by the client providing the result of an agent-toolset tool execution. Only valid on `self_hosted` environments, where sandbox-routed tools are executed by the client rather than the server.

      - `JsonElement Type = "user.tool_result"`

      - `required string ID`

        Unique identifier for this event.

      - `required string ToolUseID`

        The id of the `agent.tool_use` event this result corresponds to, which can be found in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

      - `IReadOnlyList<Content> Content`

        The result content returned by the tool.

        - `class BetaManagedAgentsTextBlock`

          Regular text content.

        - `class BetaManagedAgentsImageBlock`

          Image content specified directly as base64 data or as a reference via a URL.

        - `class BetaManagedAgentsDocumentBlock`

          Document content, either specified directly as base64 data, as text, or as a reference via a URL.

        - `class BetaManagedAgentsSearchResultBlock`

          A block containing a web search result.

      - `bool? IsError`

        Whether the tool execution resulted in an error.

      - `DateTimeOffset? ProcessedAt`

        Timestamp when this result was processed.

        format: date-time

      - `string? SessionThreadID`

        Set by the server to the subagent thread this result was routed to. Omitted when it was routed to the primary thread.

    - `class BetaManagedAgentsSystemMessageEvent`

      A mid-conversation system message event. Carries system-role content that is appended to the session as a `role: "system"` turn.

      - `JsonElement Type = "system.message"`

      - `required string ID`

        Unique identifier for this event.

      - `required IReadOnlyList<BetaManagedAgentsSystemContentBlock> Content`

        System content blocks. Text-only.

        - `JsonElement Type = "text"`

        - `required string Text`

          The text content.

          minLength: 1

      - `DateTimeOffset? ProcessedAt`

        Timestamp when this system message was processed.

        format: date-time

### Example

```csharp
using System;
using Anthropic.Models.Beta.Sessions.Events;

EventSendParams parameters = new()
{
    SessionID = "sesn_011CZkZAtmR3yMPDzynEDxu7",
    Events =
    [
        new BetaManagedAgentsUserMessageEventParams(

            [
                new BetaManagedAgentsTextBlock("Where is my order #1234?")
            ]
        ),
    ],
};

var betaManagedAgentsSendSessionEvents = await client.Beta.Sessions.Events.Send(parameters);

Console.WriteLine(betaManagedAgentsSendSessionEvents);
```

#### Response (200)

```json
{
  "data": [
    {
      "id": "sevt_011CZkZGPp1iBcp4kaQSihUm",
      "content": [
        {
          "text": "Where is my order #1234?",
          "type": "text"
        }
      ],
      "type": "user.message",
      "processed_at": "2026-03-15T10:00:00Z"
    }
  ]
}
```

## Stream Events

`IAsyncEnumerable<BetaManagedAgentsStreamSessionEvents> Beta.Sessions.Events.StreamStreaming(parameters, cancellationToken = default)`

**GET** `/v1/sessions/{session_id}/events/stream`

Stream Events

### Parameters

- `EventStreamParams parameters`

  - `required string sessionID` (path parameter)

  - `IReadOnlyList<BetaManagedAgentsDeltaType> eventDeltas` (query parameter)

    When set, this connection also receives streaming deltas (`event_start`, `event_delta`) while an event is being produced, before the event itself arrives. Deltas are best-effort; when the final event is produced it carries the complete content. A model request that ends early (an error or interrupt) produces no final event — its terminal `span.model_request_end` closes the preview. Accepts one or more event types to preview and may be repeated: `agent.message` streams `content_delta` fragments; `agent.thinking` is start-only — a signal that the agent has begun extended thinking, concluded by the `agent.thinking` event itself. Only previews of the requested event types are sent.

    - `AgentMessage("agent.message")`

    - `AgentThinking("agent.thinking")`

  - `IReadOnlyList<AnthropicBeta> betas` (header parameter)

    This endpoint is in beta: requests must send `managed-agents-2026-04-01` in this header.

    - `MessageBatches2024_09_24("message-batches-2024-09-24")`

    - `PromptCaching2024_07_31("prompt-caching-2024-07-31")`

    - `ComputerUse2024_10_22("computer-use-2024-10-22")`

    - `ComputerUse2025_01_24("computer-use-2025-01-24")`

    - `Pdfs2024_09_25("pdfs-2024-09-25")`

    - `TokenCounting2024_11_01("token-counting-2024-11-01")`

    - `TokenEfficientTools2025_02_19("token-efficient-tools-2025-02-19")`

    - `Output128k2025_02_19("output-128k-2025-02-19")`

    - `FilesApi2025_04_14("files-api-2025-04-14")`

    - `McpClient2025_04_04("mcp-client-2025-04-04")`

    - `McpClient2025_11_20("mcp-client-2025-11-20")`

    - `DevFullThinking2025_05_14("dev-full-thinking-2025-05-14")`

    - `InterleavedThinking2025_05_14("interleaved-thinking-2025-05-14")`

    - `CodeExecution2025_05_22("code-execution-2025-05-22")`

    - `ExtendedCacheTtl2025_04_11("extended-cache-ttl-2025-04-11")`

    - `Context1m2025_08_07("context-1m-2025-08-07")`

    - `ContextManagement2025_06_27("context-management-2025-06-27")`

    - `ModelContextWindowExceeded2025_08_26("model-context-window-exceeded-2025-08-26")`

    - `Skills2025_10_02("skills-2025-10-02")`

    - `FastMode2026_02_01("fast-mode-2026-02-01")`

    - `Output300k2026_03_24("output-300k-2026-03-24")`

    - `UserProfiles2026_03_24("user-profiles-2026-03-24")`

    - `UserProfiles2026_08_18("user-profiles-2026-08-18")`

    - `UserProfiles2026_09_04("user-profiles-2026-09-04")`

    - `AdvisorTool2026_03_01("advisor-tool-2026-03-01")`

    - `ManagedAgents2026_04_01("managed-agents-2026-04-01")`

    - `CacheDiagnosis2026_04_07("cache-diagnosis-2026-04-07")`

    - `Dreaming2026_04_21("dreaming-2026-04-21")`

    - `ThinkingTokenCount2026_05_13("thinking-token-count-2026-05-13")`

    - `ServerSideFallback2026_06_01("server-side-fallback-2026-06-01")`

    - `ServerSideFallback2026_07_01("server-side-fallback-2026-07-01")`

    - `FallbackCredit2026_06_01("fallback-credit-2026-06-01")`

    - `FallbackCredit2026_07_01("fallback-credit-2026-07-01")`

    - `AgentMemory2026_07_22("agent-memory-2026-07-22")`

    - `MidConversationToolChanges2026_07_01("mid-conversation-tool-changes-2026-07-01")`

    - `Compact2026_01_12("compact-2026-01-12")`

    - `ComputerUse2025_11_24("computer-use-2025-11-24")`

    - `McpTunnels2026_06_22("mcp-tunnels-2026-06-22")`

    - `StructuredOutputs2025_11_13("structured-outputs-2025-11-13")`

    - `TaskBudgets2026_03_13("task-budgets-2026-03-13")`

    - `ThinkingDisplayUpdates2026_08_18("thinking-display-updates-2026-08-18")`

    - `CEUserManagement2026_07_13("ce-user-management-2026-07-13")`

    - `MidConversationOutputConfig2026_07_01("mid-conversation-output-config-2026-07-01")`

    - `ThinkingBindingControls2026_08_01("thinking-binding-controls-2026-08-01")`

    - `MidConversationSystemClearAt2026_08_21("mid-conversation-system-clear-at-2026-08-21")`

    - `Compact2026_09_04("compact-2026-09-04")`

    - `InlineTools2026_09_15("inline-tools-2026-09-15")`

    - `McpClient2026_09_15("mcp-client-2026-09-15")`

    - `CEPlugins2026_09_01("ce-plugins-2026-09-01")`

    - `SpendLimitReads2026_09_26("spend-limit-reads-2026-09-26")`

    - `TelemetryDestinations2026_08_11("telemetry-destinations-2026-08-11")`

    - `Webhooks2026_10_07("webhooks-2026-10-07")`

    - `MessageThreads2026_08_12("message-threads-2026-08-12")`

    - `AnalyticsUsageCost2026_08_24("analytics-usage-cost-2026-08-24")`

    - `ExperimentalClaudeTag2026_10_21("experimental-claude-tag-2026-10-21")`

  - `string workspaceID` (header parameter)

    Optional header to select the Workspace for this request. The value is a Workspace ID (for example, `wrkspc_011CZkZaBF1tNoB5wlCeusgy`).

    Only needed for credentials that can act on more than one Workspace. A credential that belongs to a specific Workspace may omit it; if sent, it must match that Workspace.

### Returns

- `class BetaManagedAgentsStreamSessionEvents: union`

  Server-sent event in the session stream.

  - `class BetaManagedAgentsUserMessageEvent`

    A user message event in the session conversation.

    - `JsonElement Type = "user.message"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyList<Content> Content`

      Array of content blocks comprising the user message.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

        - `JsonElement Type = "text"`

        - `required string Text`

          The text content.

          minLength: 1

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

        - `JsonElement Type = "image"`

        - `required Source Source`

          The source of the image data.

          - `class BetaManagedAgentsBase64ImageSource`

            Base64-encoded image data.

            - `JsonElement Type = "base64"`

            - `required string Data`

              Base64-encoded image data.

              minLength: 1

            - `required string MediaType`

              MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif", "image/webp").

              minLength: 1

          - `class BetaManagedAgentsUrlImageSource`

            Image referenced by URL.

            - `JsonElement Type = "url"`

            - `required string Url`

              URL of the image to fetch.

              minLength: 1

          - `class BetaManagedAgentsFileImageSource`

            Image referenced by file ID.

            - `JsonElement Type = "file"`

            - `required string FileID`

              ID of a previously uploaded file.

              minLength: 1

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

        - `JsonElement Type = "document"`

        - `required Source Source`

          The source of the document data.

          - `class BetaManagedAgentsBase64DocumentSource`

            Base64-encoded document data.

            - `JsonElement Type = "base64"`

            - `required string Data`

              Base64-encoded document data.

              minLength: 1

            - `required string MediaType`

              MIME type of the document (e.g., "application/pdf").

              minLength: 1

          - `class BetaManagedAgentsPlainTextDocumentSource`

            Plain text document content.

            - `JsonElement Type = "text"`

            - `required string Data`

              The plain text content.

              minLength: 1

            - `JsonElement MediaType = "text/plain"`

              MIME type of the text content. Must be "text/plain".

          - `class BetaManagedAgentsUrlDocumentSource`

            Document referenced by URL.

            - `JsonElement Type = "url"`

            - `required string Url`

              URL of the document to fetch.

              minLength: 1

          - `class BetaManagedAgentsFileDocumentSource`

            Document referenced by file ID.

            - `JsonElement Type = "file"`

            - `required string FileID`

              ID of a previously uploaded file.

              minLength: 1

        - `string? Context`

          Additional context about the document for the model.

        - `string? Title`

          The title of the document.

      - `class BetaManagedAgentsRedactedBlock`

        Placeholder for content withheld by Anthropic model policy.

        - `JsonElement Type = "redacted"`

    - `DateTimeOffset? ProcessedAt`

      Timestamp when the agent finished processing this message.

      format: date-time

  - `class BetaManagedAgentsUserInterruptEvent`

    An interrupt event that pauses agent execution and returns control to the user.

    - `JsonElement Type = "user.interrupt"`

    - `required string ID`

      Unique identifier for this event.

    - `DateTimeOffset? ProcessedAt`

      Timestamp when the interrupt was processed.

      format: date-time

    - `string? SessionThreadID`

      If absent, interrupts every non-archived thread in a multiagent session (or the primary alone in a single-agent session). If present, interrupts only the named thread.

  - `class BetaManagedAgentsUserToolConfirmationEvent`

    A tool confirmation event that approves or denies a pending tool execution.

    - `JsonElement Type = "user.tool_confirmation"`

    - `required string ID`

      Unique identifier for this event.

    - `required Result Result`

      The confirmation result: 'allow' or 'deny'.

      - `Allow("allow")`

      - `Deny("deny")`

    - `required string ToolUseID`

      The id of the `agent.tool_use` or `agent.mcp_tool_use` event this result corresponds to, which can be found in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

    - `string? DenyMessage`

      Optional message providing context for a 'deny' decision. Only allowed when result is 'deny'.

      maxLength: 10000

    - `DateTimeOffset? ProcessedAt`

      Timestamp when the confirmation was processed.

      format: date-time

    - `string? SessionThreadID`

      Set by the server to the subagent thread this confirmation was routed to. Omitted when it was routed to the primary thread.

  - `class BetaManagedAgentsUserCustomToolResultEvent`

    Event sent by the client providing the result of a custom tool execution.

    - `JsonElement Type = "user.custom_tool_result"`

    - `required string ID`

      Unique identifier for this event.

    - `required string CustomToolUseID`

      The id of the `agent.custom_tool_use` event this result corresponds to. It is also listed in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

    - `IReadOnlyList<Content> Content`

      The result content returned by the tool.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsSearchResultBlock`

        A block containing a web search result.

        - `JsonElement Type = "search_result"`

        - `required BetaManagedAgentsSearchResultCitations Citations`

          Citation settings for this search result.

          - `required bool Enabled`

            Whether citations are enabled for this search result.

        - `required IReadOnlyList<BetaManagedAgentsSearchResultContent> Content`

          Array of text content blocks from the search result.

          - `JsonElement Type = "text"`

          - `required string Text`

            The text content.

            minLength: 1

        - `required string Source`

          The URL source of the search result.

          minLength: 1

        - `required string Title`

          The title of the search result.

          minLength: 1

    - `bool? IsError`

      Whether the tool execution resulted in an error.

    - `DateTimeOffset? ProcessedAt`

      Timestamp when this result was processed.

      format: date-time

    - `string? SessionThreadID`

      Set by the server to the subagent thread this result was routed to. Omitted when it was routed to the primary thread.

  - `class BetaManagedAgentsAgentCustomToolUseEvent`

    Event emitted when the agent calls a custom tool. The session goes idle until the client sends a `user.custom_tool_result` event with the result. The client can send it as soon as this event arrives, without waiting for `session.status_idle`.

    - `JsonElement Type = "agent.custom_tool_use"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyDictionary<string, JsonElement> Input`

      Input parameters for the tool call.

    - `required string Name`

      Name of the custom tool being called.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this tool use was processed.

      format: date-time

    - `string? SessionThreadID`

      When set, this event was cross-posted from a subagent's thread to surface its custom tool use on the primary thread's stream. Empty on the thread's own events. Informational only: the server routes the matching `user.custom_tool_result` by `custom_tool_use_id`, so clients do not send it back.

  - `class BetaManagedAgentsAgentMessageEvent`

    An agent response event in the session conversation.

    - `JsonElement Type = "agent.message"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyList<Content> Content`

      Array of text blocks comprising the agent response.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsRedactedBlock`

        Placeholder for content withheld by Anthropic model policy.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this response was generated.

      format: date-time

  - `class BetaManagedAgentsAgentThinkingEvent`

    Indicates the agent is making forward progress via extended thinking. A progress signal, not a content carrier.

    - `JsonElement Type = "agent.thinking"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this thinking was produced.

      format: date-time

  - `class BetaManagedAgentsAgentMcpToolUseEvent`

    Event emitted when the agent invokes a tool provided by an MCP server.

    - `JsonElement Type = "agent.mcp_tool_use"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyDictionary<string, JsonElement> Input`

      Input parameters for the tool call.

    - `required string McpServerName`

      Name of the MCP server providing the tool.

    - `required string Name`

      Name of the MCP tool being used.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `BetaManagedAgentsAgentEvaluatedPermission EvaluatedPermission`

      The evaluated permission policy for this tool invocation.

      - `Allow("allow")`

      - `Ask("ask")`

      - `Deny("deny")`

    - `BetaManagedAgentsAgentToolEvaluation Evaluation`

      Which resolved permission_policy produced evaluated_permission: always_allow, always_ask, or auto (with the server's per-invocation judgement). Absent only when the server refused the call before any policy applied (for example, the named tool is not enabled in the session); such a refusal has evaluated_permission deny. An event recorded before this field existed reads as the arm its evaluated_permission implies (always_allow for allow, always_ask for ask).

      - `class BetaManagedAgentsAgentToolEvaluationAlwaysAllow`

        The resolved permission_policy was always_allow; accompanies evaluated_permission "allow".

        - `JsonElement Type = "always_allow"`

      - `class BetaManagedAgentsAgentToolEvaluationAlwaysAsk`

        The resolved permission_policy was always_ask; accompanies evaluated_permission "ask".

        - `JsonElement Type = "always_ask"`

      - `class BetaManagedAgentsAgentToolEvaluationAuto`

        The resolved permission_policy was auto: the server judged this invocation individually.

        - `JsonElement Type = "auto"`

        - `required BetaManagedAgentsAgentAutoEvaluatedPermission EvaluatedPermission`

          The server's judgement for this invocation.

          - `class BetaManagedAgentsAgentAutoEvaluatedPermissionAllow`

            The server judged the invocation safe to execute without client approval.

            - `JsonElement Type = "allow"`

          - `class BetaManagedAgentsAgentAutoEvaluatedPermissionAsk`

            The server reached no judgement; the invocation is held for client approval.

            - `JsonElement Type = "ask"`

            - `required string ReasonCode`

              The judgement's grounds in registry-bound terms, for client branching and audit rather than end-user display. Open registry; currently "indeterminate" (no judgement was reached). Clients must tolerate values outside this set.

              maxLength: 64

          - `class BetaManagedAgentsAgentAutoEvaluatedPermissionDeny`

            The server judged the invocation high-risk; it does not execute and a synthetic error tool result is appended.

            - `JsonElement Type = "deny"`

            - `required string ReasonCode`

              The judgement's grounds in registry-bound terms. Open registry; currently "high_risk" (judged high-risk; the call does not run). Clients must tolerate values outside this set.

              maxLength: 64

    - `string? SessionThreadID`

      When set, this event was cross-posted from a subagent's thread to surface its permission request on the primary thread's stream. Empty on the thread's own events. Informational only: the server routes the matching `user.tool_confirmation` by `tool_use_id`, so clients do not send it back.

  - `class BetaManagedAgentsAgentMcpToolResultEvent`

    Event representing the result of an MCP tool execution.

    - `JsonElement Type = "agent.mcp_tool_result"`

    - `required string ID`

      Unique identifier for this event.

    - `required string McpToolUseID`

      The id of the `agent.mcp_tool_use` event this result corresponds to.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `IReadOnlyList<Content> Content`

      The result content returned by the tool.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsSearchResultBlock`

        A block containing a web search result.

    - `bool? IsError`

      Whether the tool execution resulted in an error.

  - `class BetaManagedAgentsAgentToolUseEvent`

    Event emitted when the agent invokes a built-in agent tool.

    - `JsonElement Type = "agent.tool_use"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyDictionary<string, JsonElement> Input`

      Input parameters for the tool call.

    - `required string Name`

      Name of the agent tool being used.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `BetaManagedAgentsAgentEvaluatedPermission EvaluatedPermission`

      The evaluated permission policy for this tool invocation.

    - `BetaManagedAgentsAgentToolEvaluation Evaluation`

      Which resolved permission_policy produced evaluated_permission: always_allow, always_ask, or auto (with the server's per-invocation judgement). Absent only when the server refused the call before any policy applied (for example, the named tool is not enabled in the session); such a refusal has evaluated_permission deny. An event recorded before this field existed reads as the arm its evaluated_permission implies (always_allow for allow, always_ask for ask).

    - `string? SessionThreadID`

      When set, this event was cross-posted from a subagent's thread to surface its permission request on the primary thread's stream. Empty on the thread's own events. Informational only: the server routes the matching `user.tool_confirmation` or `user.tool_result` by `tool_use_id`, so clients do not send it back.

  - `class BetaManagedAgentsAgentToolResultEvent`

    Event representing the result of an agent tool execution.

    - `JsonElement Type = "agent.tool_result"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string ToolUseID`

      The id of the `agent.tool_use` event this result corresponds to.

    - `IReadOnlyList<Content> Content`

      The result content returned by the tool.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsSearchResultBlock`

        A block containing a web search result.

    - `bool? IsError`

      Whether the tool execution resulted in an error.

  - `class BetaManagedAgentsAgentThreadMessageReceivedEvent`

    Delivery event written to the target thread's input stream when an agent-to-agent message arrives.

    - `JsonElement Type = "agent.thread_message_received"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyList<Content> Content`

      Message content blocks.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsRedactedBlock`

        Placeholder for content withheld by Anthropic model policy.

    - `required string FromSessionThreadID`

      Public `sthr_` ID of the thread that sent the message.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the message was received.

      format: date-time

    - `string? FromAgentName`

      Name of the callable agent this message came from. Absent when received from the primary agent.

  - `class BetaManagedAgentsAgentThreadMessageSentEvent`

    Observability event emitted to the sender's output stream when an agent-to-agent message is sent.

    - `JsonElement Type = "agent.thread_message_sent"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyList<Content> Content`

      Message content blocks.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsRedactedBlock`

        Placeholder for content withheld by Anthropic model policy.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the message was sent.

      format: date-time

    - `required string ToSessionThreadID`

      Public `sthr_` ID of the thread the message was sent to.

    - `string? ToAgentName`

      Name of the callable agent this message was sent to. Absent when sent to the primary agent.

  - `class BetaManagedAgentsAgentThreadContextCompactedEvent`

    Indicates that context compaction (summarization) occurred during the session.

    - `JsonElement Type = "agent.thread_context_compacted"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when compaction was processed.

      format: date-time

  - `class BetaManagedAgentsSessionErrorEvent`

    An error event indicating a problem occurred during session execution.

    - `JsonElement Type = "session.error"`

    - `required string ID`

      Unique identifier for this event.

    - `required Error Error`

      - `class BetaManagedAgentsUnknownError`

        An unknown or unexpected error occurred during session execution. A fallback variant; clients that don't recognize a new error code can match on `retry_status` and `message` alone.

        - `JsonElement Type = "unknown_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

            - `JsonElement Type = "retrying"`

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

            - `JsonElement Type = "exhausted"`

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

            - `JsonElement Type = "terminal"`

      - `class BetaManagedAgentsModelOverloadedError`

        The model is currently overloaded. Emitted after automatic retries are exhausted.

        - `JsonElement Type = "model_overloaded_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsModelRateLimitedError`

        The model request was rate-limited.

        - `JsonElement Type = "model_rate_limited_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsModelRequestFailedError`

        A model request failed for a reason other than overload or rate-limiting.

        - `JsonElement Type = "model_request_failed_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsMcpConnectionFailedError`

        Failed to connect to an MCP server.

        - `JsonElement Type = "mcp_connection_failed_error"`

        - `required string McpServerName`

          Name of the MCP server that failed to connect.

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsMcpAuthenticationFailedError`

        Authentication to an MCP server failed.

        - `JsonElement Type = "mcp_authentication_failed_error"`

        - `required string McpServerName`

          Name of the MCP server that failed authentication.

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsBillingError`

        The caller's organization or workspace cannot make model requests — out of credits or spend limit reached. Retrying with the same credentials will not succeed; the caller must resolve the billing state.

        - `JsonElement Type = "billing_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsCredentialHostUnreachableError`

        An `environment_variable` credential's `auth.networking.allowed_hosts` includes a host the environment's network policy does not permit.

        - `JsonElement Type = "credential_host_unreachable_error"`

        - `required string CredentialID`

          ID of the affected credential.

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

        - `required string VaultID`

          ID of the vault containing the affected credential.

      - `class BetaManagedAgentsToolUseLimitReachedError`

        The turn stopped because the agent loop reached its limit on tool-use rounds (one model response that calls tools, plus running those tools, is one round), not because a request failed. The thread goes idle with `stop_reason: retries_exhausted` (a child thread then terminates); the next `user.message` starts a new turn.

        - `JsonElement Type = "tool_use_limit_reached_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsCompactionLimitReachedError`

        The turn stopped because the context was compacted the maximum number of times in a row without the model producing a message or a tool call, not because a request failed. The thread goes idle with `stop_reason: retries_exhausted` (a child thread then terminates); the next `user.message` starts a new turn.

        - `JsonElement Type = "compaction_limit_reached_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsRepositoryAuthenticationError`

        The repository host rejected the credentials, or required credentials and received none.

        - `JsonElement Type = "repository_authentication_error"`

        - `required string Message`

          Human-readable error description.

        - `required string? RepositoryUrl`

          URL of the repository that could not be cloned. Null when it could not be identified.

        - `required RetryStatus RetryStatus`

          What the client should do next. Always `retrying`: the session keeps running without the repository.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsRepositoryForbiddenError`

        The repository host refused access to the repository.

        - `JsonElement Type = "repository_forbidden_error"`

        - `required string Message`

          Human-readable error description.

        - `required string? RepositoryUrl`

          URL of the repository that could not be cloned. Null when it could not be identified.

        - `required RetryStatus RetryStatus`

          What the client should do next. Always `retrying`: the session keeps running without the repository.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsRepositoryNotFoundError`

        The repository host reported the repository as not found.

        - `JsonElement Type = "repository_not_found_error"`

        - `required string Message`

          Human-readable error description.

        - `required string? RepositoryUrl`

          URL of the repository that could not be cloned. Null when it could not be identified.

        - `required RetryStatus RetryStatus`

          What the client should do next. Always `retrying`: the session keeps running without the repository.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsRepositoryCheckoutError`

        The requested branch or commit does not exist in the repository.

        - `JsonElement Type = "repository_checkout_error"`

        - `required string Message`

          Human-readable error description.

        - `required string? RepositoryUrl`

          URL of the repository that could not be cloned. Null when it could not be identified.

        - `required RetryStatus RetryStatus`

          What the client should do next. Always `retrying`: the session keeps running without the repository.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsRepositoryCloneError`

        The repository could not be cloned.

        - `JsonElement Type = "repository_clone_error"`

        - `required string Message`

          Human-readable error description.

        - `required string? RepositoryUrl`

          URL of the repository that could not be cloned. Null when it could not be identified.

        - `required RetryStatus RetryStatus`

          What the client should do next. Always `retrying`: the session keeps running without the repository.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the error occurred.

      format: date-time

  - `class BetaManagedAgentsSessionStatusRescheduledEvent`

    Indicates the session is recovering from an error state and is rescheduled for execution.

    - `JsonElement Type = "session.status_rescheduled"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of status change.

      format: date-time

  - `class BetaManagedAgentsSessionStatusRunningEvent`

    Indicates the session is actively running and the agent is working.

    - `JsonElement Type = "session.status_running"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of status change.

      format: date-time

  - `class BetaManagedAgentsSessionStatusIdleEvent`

    Indicates the agent has paused and is awaiting user input.

    - `JsonElement Type = "session.status_idle"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of status change.

      format: date-time

    - `required BetaManagedAgentsSessionRefusalStopDetails? StopDetails`

      Structured information about why the session stopped. `null` when there is nothing more to report.

      - `JsonElement Type = "refusal"`

      - `required Category? Category`

        The policy category that triggered the refusal, or `null` when there is no named category. New values can be added over time.

        - `Cyber("cyber")`

        - `Bio("bio")`

        - `FrontierLlm("frontier_llm")`

        - `ReasoningExtraction("reasoning_extraction")`

        - `GeneralHarms("general_harms")`

      - `required string? Explanation`

        Human-readable explanation of the refusal, or `null` when none is available. The wording can change, so do not parse it.

    - `required StopReason StopReason`

      - `class BetaManagedAgentsSessionEndTurn`

        The agent completed its turn naturally and is ready for the next user message.

        - `JsonElement Type = "end_turn"`

      - `class BetaManagedAgentsSessionRequiresAction`

        The agent is idle waiting on one or more blocking user-input events (tool confirmation, custom tool result, etc.). Resolving all of them transitions the session back to running.

        - `JsonElement Type = "requires_action"`

        - `required IReadOnlyList<string> EventIds`

          The ids of events the agent is blocked on. Resolving fewer than all re-emits `session.status_idle` with the remainder.

      - `class BetaManagedAgentsSessionRetriesExhausted`

        The turn ended because repeated errors exhausted the retry budget or an error escalated to `retry_status: 'exhausted'`.

        - `JsonElement Type = "retries_exhausted"`

      - `class BetaManagedAgentsSessionBudgetReached`

        The agent stopped because the session's tracked list cost reached its budget, or because its usage includes a model with no list price (which the budget cannot measure). Raise the budget to continue — or, if raising is rejected because a model has no list price, remove the budget.

        - `JsonElement Type = "budget_reached"`

      - `class BetaManagedAgentsSessionRefusal`

        The turn ended because the model's response was refused, for example by a safety classifier.

        - `JsonElement Type = "refusal"`

  - `class BetaManagedAgentsSessionStatusTerminatedEvent`

    Indicates the session has terminated, either due to an error or completion.

    - `JsonElement Type = "session.status_terminated"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of status change.

      format: date-time

  - `class BetaManagedAgentsSessionThreadCreatedEvent`

    Emitted when a child thread is created. Written to the parent thread's output stream so clients observing the session see child creation.

    - `JsonElement Type = "session.thread_created"`

    - `required string ID`

      Unique identifier for this event.

    - `required string AgentName`

      Name of the callable agent the thread runs.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the thread was created.

      format: date-time

    - `required string SessionThreadID`

      Public `sthr_` ID of the newly created thread.

    - `required string? WorkflowRunID`

      Identifier of the workflow run that created the thread, or `null` for any other thread.

  - `class BetaManagedAgentsSpanOutcomeEvaluationStartEvent`

    Emitted when an outcome evaluation cycle begins.

    - `JsonElement Type = "span.outcome_evaluation_start"`

    - `required string ID`

      Unique identifier for this event.

    - `required int Iteration`

      0-indexed revision cycle. 0 is the first evaluation; 1 is the re-evaluation after the first revision; etc.

      format: int32

    - `required string OutcomeID`

      The `outc_` ID of the outcome being evaluated.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when outcome evaluation started.

      format: date-time

  - `class BetaManagedAgentsSpanOutcomeEvaluationEndEvent`

    Emitted when an outcome evaluation cycle completes. Carries the verdict and aggregate token usage. A verdict of `needs_revision` means another evaluation cycle follows; `satisfied`, `max_iterations_reached`, `failed`, or `interrupted` are terminal — no further evaluation cycles follow.

    - `JsonElement Type = "span.outcome_evaluation_end"`

    - `required string ID`

      Unique identifier for this event.

    - `required string Explanation`

      Human-readable explanation of the verdict. For `needs_revision`, describes which criteria failed and why.

    - `required int Iteration`

      0-indexed revision cycle, matching the corresponding `span.outcome_evaluation_start`.

      format: int32

    - `required string OutcomeEvaluationStartID`

      The id of the corresponding `span.outcome_evaluation_start` event.

    - `required string OutcomeID`

      The `outc_` ID of the outcome being evaluated.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when outcome evaluation ended.

      format: date-time

    - `required string Result`

      Evaluation verdict. 'satisfied': criteria met, session goes idle. 'needs_revision': criteria not met, another revision cycle follows. 'max_iterations_reached': evaluation budget exhausted with criteria still unmet — one final acknowledgment turn follows before the session goes idle, but no further evaluation runs. 'failed': grader determined the rubric does not apply to the deliverables. 'interrupted': user sent an interrupt while evaluation was in progress.

    - `required BetaManagedAgentsSpanModelUsage Usage`

      Aggregate token usage for this evaluation cycle. Sums across all grader model requests within the cycle.

      - `required int CacheCreationInputTokens`

        Tokens used to create prompt cache in this request.

        format: int32

      - `required int CacheReadInputTokens`

        Tokens read from prompt cache in this request.

        format: int32

      - `required int InputTokens`

        Input tokens consumed by this request.

        format: int32

      - `required int OutputTokens`

        Output tokens generated by this request.

        format: int32

      - `Speed? Speed`

        Inference speed tier this request actually ran at. Mirrors `usage.speed` on /v1/messages. Only present when the fast-mode beta is active.

        - `Standard("standard")`

        - `Fast("fast")`

  - `class BetaManagedAgentsSpanModelRequestStartEvent`

    Emitted when a model request is initiated by the agent.

    - `JsonElement Type = "span.model_request_start"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the model request started.

      format: date-time

  - `class BetaManagedAgentsSpanModelRequestEndEvent`

    Emitted when a model request completes.

    - `JsonElement Type = "span.model_request_end"`

    - `required string ID`

      Unique identifier for this event.

    - `required bool? IsError`

      Whether the model request resulted in an error.

    - `required string ModelRequestStartID`

      The id of the corresponding `span.model_request_start` event.

    - `required BetaManagedAgentsSpanModelUsage ModelUsage`

      Token usage for this model request.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the model request completed.

      format: date-time

  - `class BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent`

    Periodic heartbeat emitted while an outcome evaluation cycle is in progress. Distinguishes 'evaluation is actively running' from 'evaluation is stuck' between the corresponding `span.outcome_evaluation_start` and `span.outcome_evaluation_end` events.

    - `JsonElement Type = "span.outcome_evaluation_ongoing"`

    - `required string ID`

      Unique identifier for this event.

    - `required int Iteration`

      0-indexed revision cycle, matching the corresponding `span.outcome_evaluation_start`.

      format: int32

    - `required string OutcomeID`

      The `outc_` ID of the outcome being evaluated.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this heartbeat was emitted.

      format: date-time

  - `class BetaManagedAgentsUserDefineOutcomeEvent`

    Echo of a `user.define_outcome` input event. Carries the server-generated `outcome_id` that subsequent `span.outcome_evaluation_*` events reference.

    - `JsonElement Type = "user.define_outcome"`

    - `required string ID`

      Unique identifier for this event.

    - `required string Description`

      What the agent should produce. Copied from the input event.

    - `required int? MaxIterations`

      Evaluate-then-revise cycles before giving up. Default 3, max 20.

      format: int32

    - `required string OutcomeID`

      Server-generated `outc_` ID for this outcome. Referenced by `span.outcome_evaluation_*` events and the session's `outcome_evaluations` list.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the outcome was accepted.

      format: date-time

    - `required Rubric Rubric`

      How to grade the outcome. File rubrics are currently resolved to their text content; clients should handle both variants.

      - `class BetaManagedAgentsFileRubric`

        Rubric referenced by a file uploaded via the Files API.

        - `JsonElement Type = "file"`

        - `required string FileID`

          ID of the rubric file.

      - `class BetaManagedAgentsTextRubric`

        Rubric content provided inline as text.

        - `JsonElement Type = "text"`

        - `required string Content`

          Rubric content. Plain text or markdown — the grader treats it as freeform text.

  - `class BetaManagedAgentsSessionDeletedEvent`

    Emitted when a session has been deleted. Terminates any active event stream — no further events will be emitted for this session.

    - `JsonElement Type = "session.deleted"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the session was deleted.

      format: date-time

  - `class BetaManagedAgentsSessionThreadStatusRunningEvent`

    A session thread has begun executing. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.

    - `JsonElement Type = "session.thread_status_running"`

    - `required string ID`

      Unique identifier for this event.

    - `required string AgentName`

      Name of the agent the thread runs.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of the status transition.

      format: date-time

    - `required string SessionThreadID`

      Public sthr_ ID of the thread that started running.

  - `class BetaManagedAgentsSessionThreadStatusIdleEvent`

    A session thread has yielded and is awaiting input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.

    - `JsonElement Type = "session.thread_status_idle"`

    - `required string ID`

      Unique identifier for this event.

    - `required string AgentName`

      Name of the agent the thread runs.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of the status transition.

      format: date-time

    - `required string SessionThreadID`

      Public sthr_ ID of the thread that went idle.

    - `required BetaManagedAgentsSessionRefusalStopDetails? StopDetails`

      Structured information about why the thread stopped. `null` when there is nothing more to report.

    - `required StopReason StopReason`

      - `class BetaManagedAgentsSessionEndTurn`

        The agent completed its turn naturally and is ready for the next user message.

      - `class BetaManagedAgentsSessionRequiresAction`

        The agent is idle waiting on one or more blocking user-input events (tool confirmation, custom tool result, etc.). Resolving all of them transitions the session back to running.

      - `class BetaManagedAgentsSessionRetriesExhausted`

        The turn ended because repeated errors exhausted the retry budget or an error escalated to `retry_status: 'exhausted'`.

      - `class BetaManagedAgentsSessionBudgetReached`

        The agent stopped because the session's tracked list cost reached its budget, or because its usage includes a model with no list price (which the budget cannot measure). Raise the budget to continue — or, if raising is rejected because a model has no list price, remove the budget.

      - `class BetaManagedAgentsSessionRefusal`

        The turn ended because the model's response was refused, for example by a safety classifier.

  - `class BetaManagedAgentsSessionThreadStatusTerminatedEvent`

    A session thread has terminated and will accept no further input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.

    - `JsonElement Type = "session.thread_status_terminated"`

    - `required string ID`

      Unique identifier for this event.

    - `required string AgentName`

      Name of the agent the thread runs.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of the status transition.

      format: date-time

    - `required string SessionThreadID`

      Public sthr_ ID of the thread that terminated.

  - `class BetaManagedAgentsUserToolResultEvent`

    Event sent by the client providing the result of an agent-toolset tool execution. Only valid on `self_hosted` environments, where sandbox-routed tools are executed by the client rather than the server.

    - `JsonElement Type = "user.tool_result"`

    - `required string ID`

      Unique identifier for this event.

    - `required string ToolUseID`

      The id of the `agent.tool_use` event this result corresponds to, which can be found in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

    - `IReadOnlyList<Content> Content`

      The result content returned by the tool.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsSearchResultBlock`

        A block containing a web search result.

    - `bool? IsError`

      Whether the tool execution resulted in an error.

    - `DateTimeOffset? ProcessedAt`

      Timestamp when this result was processed.

      format: date-time

    - `string? SessionThreadID`

      Set by the server to the subagent thread this result was routed to. Omitted when it was routed to the primary thread.

  - `class BetaManagedAgentsSessionThreadStatusRescheduledEvent`

    A session thread hit a transient error and is retrying automatically. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.

    - `JsonElement Type = "session.thread_status_rescheduled"`

    - `required string ID`

      Unique identifier for this event.

    - `required string AgentName`

      Name of the agent the thread runs.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of the status transition.

      format: date-time

    - `required string SessionThreadID`

      Public sthr_ ID of the thread that is retrying.

  - `class BetaManagedAgentsSessionUpdatedEvent`

    Emitted when an UpdateSession request changed at least one field. Carries only the fields that changed; absent fields were not part of the update. The new configuration applies from the next turn.

    - `JsonElement Type = "session.updated"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the update was applied.

      format: date-time

    - `BetaManagedAgentsSessionAgent? Agent`

      The session's effective agent configuration after the update. Present only when the update changed `agent` (tools or mcp_servers); when present it is the full materialised snapshot, not a diff.

      - `JsonElement Type = "agent"`

      - `required string ID`

      - `required string? Description`

      - `required BetaManagedAgentsExecutionIdentity ExecutionIdentity`

        Execution principal snapshotted from the agent at session creation. Always present; `{"type": "service_account"}` when runs carry no customer-named principal.

        - `class BetaManagedAgentsAwsRoleExecutionIdentity`

          An AWS IAM role principal as returned in API responses.

          - `JsonElement Type = "aws_role"`

          - `required string RoleArn`

            The IAM role's ARN.

        - `class BetaManagedAgentsServiceAccountExecutionIdentity`

          The Anthropic-managed service account as returned in API responses.

          - `JsonElement Type = "service_account"`

      - `required IReadOnlyList<BetaManagedAgentsMcpServerUrlDefinition> McpServers`

        - `JsonElement Type = "url"`

        - `required string Name`

        - `required string Url`

      - `required BetaManagedAgentsModelConfig Model`

        Model identifier and configuration.

        - `required BetaManagedAgentsModel ID`

          The model that will power your agent.

          See [models](https://docs.anthropic.com/en/docs/models-overview) for additional details and options.

          - `ClaudeHaiku5_5("claude-haiku-5-5")`

            Fastest model for high-volume, real-time tasks

          - `ClaudeSonnet5_5("claude-sonnet-5-5")`

            Efficient model for coding and agents

          - `ClaudeOpus5_5("claude-opus-5-5")`

            Powerful intelligence for coding, knowledge work, and long-running agents

          - `ClaudeFable5_1("claude-fable-5-1")`

            Frontier intelligence for ambitious tasks across coding, scientific discovery, and enterprise workflows

          - `ClaudeSonnet5("claude-sonnet-5")`

            Efficient model for coding and agents

          - `ClaudeFable5("claude-fable-5")`

            Next generation of intelligence for the hardest knowledge work and coding problems

          - `ClaudeOpus5("claude-opus-5")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeOpus4_8("claude-opus-4-8")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeOpus4_7("claude-opus-4-7")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeOpus4_6("claude-opus-4-6")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeSonnet4_6("claude-sonnet-4-6")`

            Best combination of speed and intelligence

          - `ClaudeHaiku4_5("claude-haiku-4-5")`

          - `ClaudeHaiku4_5_20251001("claude-haiku-4-5-20251001")`

          - `ClaudeOpus4_5("claude-opus-4-5")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeOpus4_5_20251101("claude-opus-4-5-20251101")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeSonnet4_5("claude-sonnet-4-5")`

            **Deprecated**: Will reach end-of-life on November 30, 2026. Please migrate to claude-sonnet-5-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.

            High-performance model for agents and coding

          - `ClaudeSonnet4_5_20250929("claude-sonnet-4-5-20250929")`

            **Deprecated**: Will reach end-of-life on November 30, 2026. Please migrate to claude-sonnet-5-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.

            High-performance model for agents and coding

        - `Effort Effort`

          How hard Claude works on each inference call. One of `low`, `medium`, `high`, `xhigh`, `max`. Always present; resolved to the per-model default at save time when not supplied.

          - `class BetaManagedAgentsEffortLow`

            Low effort. Favors latency over reasoning depth.

            - `JsonElement Type = "low"`

          - `class BetaManagedAgentsEffortMedium`

            Medium effort. Balances latency and reasoning depth.

            - `JsonElement Type = "medium"`

          - `class BetaManagedAgentsEffortHigh`

            High effort. Favors reasoning depth.

            - `JsonElement Type = "high"`

          - `class BetaManagedAgentsEffortXhigh`

            Extra-high effort. Not all models accept this level.

            - `JsonElement Type = "xhigh"`

          - `class BetaManagedAgentsEffortMax`

            Maximum effort. Favors reasoning depth over latency.

            - `JsonElement Type = "max"`

        - `string InferenceGeo`

          Geographic region for model inference. When unset, requests fall through to the workspace's default_inference_geo.

        - `Speed Speed`

          Inference speed mode. `fast` provides significantly faster output token generation at premium pricing. Defaults to `standard`. Not all models support `fast`; invalid combinations are rejected at create time.

          - `Standard("standard")`

          - `Fast("fast")`

      - `required BetaManagedAgentsSessionMultiagent? Multiagent`

        Resolved multiagent orchestration configuration. Null when the agent is single-threaded.

        - `class BetaManagedAgentsSessionMultiagentCoordinator`

          Resolved coordinator topology with full agent definitions for each roster member.

          - `JsonElement Type = "coordinator"`

          - `required IReadOnlyList<Agent> Agents`

            Full `agent` definitions the coordinator may spawn as session threads.

            - `class BetaManagedAgentsSessionThreadAgent`

              Resolved `agent` definition for a single `session_thread`. Snapshot of the agent at thread creation time. The multiagent roster is not repeated here; read it from `Session.agent`.

              - `JsonElement Type = "agent"`

              - `required string ID`

              - `required string? Description`

              - `required BetaManagedAgentsExecutionIdentity ExecutionIdentity`

                Execution principal snapshotted from the agent at session creation. Always present; `{"type": "service_account"}` when runs carry no customer-named principal.

              - `required IReadOnlyList<BetaManagedAgentsMcpServerUrlDefinition> McpServers`

                - `JsonElement Type = "url"`

                - `required string Name`

                - `required string Url`

              - `required BetaManagedAgentsModelConfig Model`

                Model identifier and configuration.

              - `required string Name`

              - `required IReadOnlyList<Skill> Skills`

                - `class BetaManagedAgentsAnthropicSkill`

                  A resolved Anthropic-managed skill.

                  - `JsonElement Type = "anthropic"`

                  - `required string SkillID`

                  - `required string Version`

                - `class BetaManagedAgentsCustomSkill`

                  A resolved user-created custom skill.

                  - `JsonElement Type = "custom"`

                  - `required string SkillID`

                  - `required string Version`

              - `required string? System`

              - `required IReadOnlyList<Tool> Tools`

                - `class BetaManagedAgentsAgentToolset20260401`

                  - `JsonElement Type = "agent_toolset_20260401"`

                  - `required IReadOnlyList<BetaManagedAgentsAgentToolConfig> Configs`

                    - `class BetaManagedAgentsBashToolConfig`

                      Configuration for the bash tool.

                      - `JsonElement Type = "bash"`

                      - `required bool Enabled`

                      - `JsonElement Name = "bash"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                          - `JsonElement Type = "always_allow"`

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                          - `JsonElement Type = "always_ask"`

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                          - `JsonElement Type = "auto"`

                    - `class BetaManagedAgentsEditToolConfig`

                      Configuration for the edit tool.

                      - `JsonElement Type = "edit"`

                      - `required bool Enabled`

                      - `JsonElement Name = "edit"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                    - `class BetaManagedAgentsReadToolConfig`

                      Configuration for the read tool.

                      - `JsonElement Type = "read"`

                      - `required bool Enabled`

                      - `JsonElement Name = "read"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                    - `class BetaManagedAgentsWriteToolConfig`

                      Configuration for the write tool.

                      - `JsonElement Type = "write"`

                      - `required bool Enabled`

                      - `JsonElement Name = "write"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                    - `class BetaManagedAgentsGlobToolConfig`

                      Configuration for the glob tool.

                      - `JsonElement Type = "glob"`

                      - `required bool Enabled`

                      - `JsonElement Name = "glob"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                    - `class BetaManagedAgentsGrepToolConfig`

                      Configuration for the grep tool.

                      - `JsonElement Type = "grep"`

                      - `required bool Enabled`

                      - `JsonElement Name = "grep"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                    - `class BetaManagedAgentsWebFetchToolConfig`

                      Configuration for the web_fetch tool.

                      - `JsonElement Type = "web_fetch"`

                      - `required bool Enabled`

                      - `JsonElement Name = "web_fetch"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                      - `required BetaManagedAgentsWebFetchUrlSources? UrlSources`

                        Which sources contribute URLs the tool may fetch, always in the object form. Null when not set, which allows every source.

                        - `required BetaManagedAgentsWebFetchUrlSourceToolFilter? ClientToolResults`

                          Which custom tools' results contribute URLs that may be fetched. Null when not set, which allows every custom tool's results.

                          - `class BetaManagedAgentsWebFetchUrlSourceAll`

                            Every URL from this source may be fetched. This is the default.

                            - `JsonElement Type = "all"`

                          - `class BetaManagedAgentsWebFetchUrlSourceNone`

                            This source contributes no URLs that may be fetched.

                            - `JsonElement Type = "none"`

                          - `class BetaManagedAgentsWebFetchUrlSourceOnly`

                            Only the named tools' results contribute URLs that may be fetched.

                            - `JsonElement Type = "only"`

                            - `required IReadOnlyList<BetaManagedAgentsWebFetchUrlSourceToolReference> Tools`

                              The tools whose results contribute. Between 1 and 128 entries, each with a different name. An empty list is rejected; use "none" to allow no tool's results.

                              - `JsonElement Type = "tool_reference"`

                                Must be "tool_reference".

                              - `required string Name`

                                Name of the tool. Compared exactly, so upper and lower case letters are different.

                                minLength: 1, maxLength: 128

                          - `class BetaManagedAgentsWebFetchUrlSourceExcept`

                            Every tool's results contribute URLs that may be fetched, except the named tools' results.

                            - `JsonElement Type = "except"`

                            - `required IReadOnlyList<BetaManagedAgentsWebFetchUrlSourceToolReference> Tools`

                              The tools whose results do not contribute. Between 1 and 128 entries, each with a different name. An empty list is rejected; use "all" to leave out no tool's results.

                              - `JsonElement Type = "tool_reference"`

                                Must be "tool_reference".

                              - `required string Name`

                                Name of the tool. Compared exactly, so upper and lower case letters are different.

                                minLength: 1, maxLength: 128

                        - `required BetaManagedAgentsWebFetchUrlSourceToolFilter? ServerToolResults`

                          Which of the web_search and web_fetch tools' results contribute URLs that may be fetched. Null when not set, which allows both.

                        - `required BetaManagedAgentsWebFetchUrlSourceUserInput? UserInput`

                          Whether URLs in the text of user messages may be fetched. Null when not set, which allows them.

                          - `class BetaManagedAgentsWebFetchUrlSourceAll`

                            Every URL from this source may be fetched. This is the default.

                          - `class BetaManagedAgentsWebFetchUrlSourceNone`

                            This source contributes no URLs that may be fetched.

                      - `IReadOnlyList<string> AllowedDomains`

                      - `IReadOnlyList<string> BlockedDomains`

                      - `int? MaxContentTokens`

                        format: int32

                    - `class BetaManagedAgentsWebSearchToolConfig`

                      Configuration for the web_search tool.

                      - `JsonElement Type = "web_search"`

                      - `required bool Enabled`

                      - `JsonElement Name = "web_search"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                      - `IReadOnlyList<string> AllowedDomains`

                      - `IReadOnlyList<string> BlockedDomains`

                      - `BetaManagedAgentsUserLocation? UserLocation`

                        Approximate user location for search result localization.

                        - `JsonElement Type = "approximate"`

                          Location precision. Only "approximate" is supported.

                        - `string? City`

                          City name.

                          minLength: 1, maxLength: 255

                        - `string? Country`

                          Two-letter ISO 3166-1 country code, uppercase.

                          pattern: ^[A-Z]{2}$

                        - `string? Region`

                          Region or state name.

                          minLength: 1, maxLength: 255

                        - `string? Timezone`

                          IANA timezone identifier, e.g. "America/Los_Angeles".

                          minLength: 1, maxLength: 255

                  - `required BetaManagedAgentsAgentToolsetDefaultConfig DefaultConfig`

                    Resolved default configuration for agent tools.

                    - `required bool Enabled`

                    - `required PermissionPolicy PermissionPolicy`

                      Permission policy for tool execution.

                      - `class BetaManagedAgentsAlwaysAllowPolicy`

                        Tool calls are automatically approved without user confirmation.

                      - `class BetaManagedAgentsAlwaysAskPolicy`

                        Tool calls require user confirmation before execution.

                      - `class BetaManagedAgentsAutoPolicy`

                        The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                - `class BetaManagedAgentsMcpToolset`

                  - `JsonElement Type = "mcp_toolset"`

                  - `required IReadOnlyList<BetaManagedAgentsMcpToolConfig> Configs`

                    - `required bool Enabled`

                    - `required string Name`

                    - `required PermissionPolicy PermissionPolicy`

                      Permission policy for tool execution.

                      - `class BetaManagedAgentsAlwaysAllowPolicy`

                        Tool calls are automatically approved without user confirmation.

                      - `class BetaManagedAgentsAlwaysAskPolicy`

                        Tool calls require user confirmation before execution.

                      - `class BetaManagedAgentsAutoPolicy`

                        The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                  - `required BetaManagedAgentsMcpToolsetDefaultConfig DefaultConfig`

                    Resolved default configuration for all tools from an MCP server.

                    - `required bool Enabled`

                    - `required PermissionPolicy PermissionPolicy`

                      Permission policy for tool execution.

                      - `class BetaManagedAgentsAlwaysAllowPolicy`

                        Tool calls are automatically approved without user confirmation.

                      - `class BetaManagedAgentsAlwaysAskPolicy`

                        Tool calls require user confirmation before execution.

                      - `class BetaManagedAgentsAutoPolicy`

                        The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                  - `required string McpServerName`

                - `class BetaManagedAgentsCustomTool`

                  A custom tool as returned in API responses.

                  - `JsonElement Type = "custom"`

                  - `required string Description`

                  - `required BetaManagedAgentsCustomToolInputSchema InputSchema`

                    JSON Schema for custom tool input parameters.

                    - `JsonElement Type = "object"`

                    - `IReadOnlyDictionary<string, JsonElement>? Properties`

                    - `IReadOnlyList<string>? Required`

                  - `required string Name`

              - `required int Version`

                format: int32

            - `class BetaManagedAgentsAdvisor`

              Platform advisor roster entry: a model the session's primary thread may consult mid-turn.

              - `JsonElement Type = "advisor"`

              - `required string Model`

                The advisor model id.

        - `class BetaManagedAgentsSessionMultiagent20261001`

          Resolved multiagent configuration with three members, as copied to the `session` at creation.

          - `JsonElement Type = "multiagent_20261001"`

          - `required BetaManagedAgentsMultiagentAdvisor Advisor`

            Whether the session's primary thread can consult an advisor model.

            - `class BetaManagedAgentsMultiagentAdvisorEnabled`

              The session's primary thread can consult `model` mid-turn.

              - `JsonElement Type = "enabled"`

              - `required string Model`

                The advisor model id.

            - `class BetaManagedAgentsMultiagentAdvisorDisabled`

              The agent has no advisor.

              - `JsonElement Type = "disabled"`

          - `required BetaManagedAgentsSessionMultiagentSubagents Subagents`

            Whether the agent can spawn session threads.

            - `class BetaManagedAgentsSessionMultiagentSubagentsEnabled`

              The agent can spawn session threads.

              - `JsonElement Type = "enabled"`

              - `required BetaManagedAgentsMultiagentInlineAgents InlineAgents`

                Whether the agent can define inline agents, which are not saved, when it spawns session threads.

                - `class BetaManagedAgentsMultiagentInlineAgentsEnabled`

                  The agent can define inline agents.

                  - `JsonElement Type = "enabled"`

                - `class BetaManagedAgentsMultiagentInlineAgentsDisabled`

                  The agent cannot define inline agents.

                  - `JsonElement Type = "disabled"`

              - `required IReadOnlyList<BetaManagedAgentsSessionThreadAgent> PredefinedAgents`

                Full `agent` definitions of the predefined agents, which are saved agents that this agent can spawn as session threads.

                - `JsonElement Type = "agent"`

                - `required string ID`

                - `required string? Description`

                - `required BetaManagedAgentsExecutionIdentity ExecutionIdentity`

                  Execution principal snapshotted from the agent at session creation. Always present; `{"type": "service_account"}` when runs carry no customer-named principal.

                - `required IReadOnlyList<BetaManagedAgentsMcpServerUrlDefinition> McpServers`

                - `required BetaManagedAgentsModelConfig Model`

                  Model identifier and configuration.

                - `required string Name`

                - `required IReadOnlyList<Skill> Skills`

                - `required string? System`

                - `required IReadOnlyList<Tool> Tools`

                - `required int Version`

                  format: int32

            - `class BetaManagedAgentsMultiagentSubagentsDisabled`

              The agent cannot spawn session threads.

              - `JsonElement Type = "disabled"`

          - `required BetaManagedAgentsSessionMultiagentWorkflows Workflows`

            Whether the agent can start workflow runs.

            - `class BetaManagedAgentsSessionMultiagentWorkflowsEnabled`

              The agent can start workflow runs.

              - `JsonElement Type = "enabled"`

              - `required BetaManagedAgentsMultiagentInlineAgents InlineAgents`

                Whether a run's plan can define inline agents, which are not saved.

              - `required IReadOnlyList<BetaManagedAgentsSessionThreadAgent> PredefinedAgents`

                Full `agent` definitions of the predefined agents, which are saved agents that a run's plan can use.

                - `JsonElement Type = "agent"`

                - `required string ID`

                - `required string? Description`

                - `required BetaManagedAgentsExecutionIdentity ExecutionIdentity`

                  Execution principal snapshotted from the agent at session creation. Always present; `{"type": "service_account"}` when runs carry no customer-named principal.

                - `required IReadOnlyList<BetaManagedAgentsMcpServerUrlDefinition> McpServers`

                - `required BetaManagedAgentsModelConfig Model`

                  Model identifier and configuration.

                - `required string Name`

                - `required IReadOnlyList<Skill> Skills`

                - `required string? System`

                - `required IReadOnlyList<Tool> Tools`

                - `required int Version`

                  format: int32

            - `class BetaManagedAgentsMultiagentWorkflowsDisabled`

              The agent cannot start workflow runs.

              - `JsonElement Type = "disabled"`

      - `required string Name`

      - `required IReadOnlyList<Skill> Skills`

        - `class BetaManagedAgentsAnthropicSkill`

          A resolved Anthropic-managed skill.

        - `class BetaManagedAgentsCustomSkill`

          A resolved user-created custom skill.

      - `required string? System`

      - `required IReadOnlyList<Tool> Tools`

        - `class BetaManagedAgentsAgentToolset20260401`

        - `class BetaManagedAgentsMcpToolset`

        - `class BetaManagedAgentsCustomTool`

          A custom tool as returned in API responses.

      - `required int Version`

        format: int32

    - `BetaManagedAgentsBudgetLimit? Budget`

      The session's budget after the update: the new budget when set or replaced, or null when the update removed it. Present only when the update changed the budget.

      - `JsonElement Type = "limit"`

      - `required BetaMonetaryAmount MaxListCost`

        Maximum list cost the session may accrue. List price is used regardless of any negotiated discount, so the cap fires at or before the actual charge.

        - `required string Amount`

          Amount in minor units of the currency, as an integer decimal string with no leading zeros: "2500" is $25.00 and "50" is fifty cents. A string rather than a number so no float rounding is ever applied.

          pattern: ^(0|[1-9]\d*)$

        - `required BetaCurrency Currency`

          Uppercase ISO-4217 currency code. `USD` is the only currency currently supported; the accepted set is closed and grows only when a new currency is priced.

    - `IReadOnlyDictionary<string, string> Metadata`

      The session's full metadata bag after the update. Present when the update set non-empty metadata; absent when metadata was unchanged or cleared to empty.

    - `string? Title`

      The session's new title. Present only when the update changed it.

  - `class BetaManagedAgentsStartEvent`

    Opens a preview of a buffered event. Carries the previewed event's type and id only. Followed by zero or more event_delta events with the same event id, normally concluded by the buffered event carrying that id. If the producing model request ends without that event (an error or interrupt mid-stream), its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history.

    - `JsonElement Type = "event_start"`

    - `required BetaManagedAgentsStartEventPreview Event`

      The previewed event's type and id. The event type determines which delta types the preview's event_delta events carry: agent.message events stream content_delta fragments; agent.thinking previews are start-only — no deltas follow, and the buffered agent.thinking with the same id concludes them.

      - `class BetaManagedAgentsAgentMessagePreview`

        - `JsonElement Type = "agent.message"`

        - `required string ID`

          The id the buffered agent.message will carry if it is emitted. Matches the event_id on this preview's event_delta events.

      - `class BetaManagedAgentsAgentThinkingPreview`

        - `JsonElement Type = "agent.thinking"`

        - `required string ID`

          The id the buffered agent.thinking will carry if it is emitted. Start-only — no event_delta events follow.

  - `class BetaManagedAgentsDeltaEvent`

    An incremental update to an event that is still being streamed. Deltas are best-effort and may stop early; when the buffered event with id == event_id is produced it carries the complete content. A model request that ends early (an error or interrupt) produces no buffered event — its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history.

    - `JsonElement Type = "event_delta"`

    - `required BetaManagedAgentsDeltaContent Delta`

      One fragment of the previewed event. The delta type is named for the previewed event's field it streams into: agent.message events stream content_delta fragments, each a partial element of the content array.

      - `JsonElement Type = "content_delta"`

      - `required BetaManagedAgentsTextBlock Content`

        A partial element of the content array at index, typed like the element itself — the same shape the buffered agent.message carries in content.

      - `long Index`

        Which entry in the previewed event's content array this fragment lands in. Insert content as that entry when the index is new; append to the existing entry otherwise.

    - `required string EventID`

      The id of the event being previewed. Matches event.id on the corresponding event_start and the buffered event that reconciles the preview.

  - `class BetaManagedAgentsSystemMessageEvent`

    A mid-conversation system message event. Carries system-role content that is appended to the session as a `role: "system"` turn.

    - `JsonElement Type = "system.message"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyList<BetaManagedAgentsSystemContentBlock> Content`

      System content blocks. Text-only.

      - `JsonElement Type = "text"`

      - `required string Text`

        The text content.

        minLength: 1

    - `DateTimeOffset? ProcessedAt`

      Timestamp when this system message was processed.

      format: date-time

  - `class BetaManagedAgentsSessionUsageEvent`

    Periodic snapshot of the session's cumulative usage and tracked list cost.

    - `JsonElement Type = "session.usage"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the snapshot was taken.

      format: date-time

    - `required BetaManagedAgentsSessionUsageSnapshot Usage`

      The session's cumulative usage at the snapshot time.

      - `double ActiveSeconds`

        Cumulative time in seconds during which the session had at least one thread in running status. Overlapping activity from concurrent threads is counted once. This is the duration the session's runtime cost is priced on.

        format: double

      - `BetaManagedAgentsCacheCreationUsage CacheCreation`

        Tokens used to create prompt cache entries, broken down by cache TTL.

        - `int Ephemeral1hInputTokens`

          Tokens used to create 1-hour ephemeral cache entries.

          format: int32

        - `int Ephemeral5mInputTokens`

          Tokens used to create 5-minute ephemeral cache entries.

          format: int32

      - `int CacheReadInputTokens`

        Total tokens read from prompt cache.

        format: int32

      - `int InputTokens`

        Total input tokens consumed across all turns.

        format: int32

      - `BetaMonetaryAmount ListCost`

        Cumulative list cost of the session across all turns, priced at public list rates.

      - `int OutputTokens`

        Total output tokens generated across all turns.

        format: int32

      - `BetaManagedAgentsServerToolUsage ServerToolUse`

        Cumulative server-executed tool usage across all turns.

        - `int WebFetchRequests`

          Number of server-executed web fetch requests.

          format: int32

        - `int WebSearchRequests`

          Number of server-executed web search requests.

          format: int32

    - `BetaManagedAgentsBudgetLimit? Budget`

      The session's configured budget at the snapshot time, or null when the session has no budget.

  - `class BetaManagedAgentsWorkflowRunCreatedEvent`

    A workflow run was created. A workflow run is background work that the session's agent starts. Emitted once per run, before the run's other `workflow_run.*` events.

    - `JsonElement Type = "workflow_run.created"`

    - `required string ID`

      Unique identifier for this event.

    - `required string? Description`

      Description that the agent gave the run, passed on as written, or `null` if it gave none.

    - `required string Name`

      Name that the agent gave the run, passed on as written, or a name that the server assigned.

    - `required IReadOnlyList<BetaManagedAgentsWorkflowRunPhase> Phases`

      The phases that the run's plan declares, in the plan's order. Can be empty.

      - `required string ID`

        Unique identifier for the phase.

      - `required string? Description`

        Description that the agent gave the phase, passed on as written, or `null` if it gave none.

      - `required string Name`

        Name that the agent gave the phase, passed on as written.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

  - `class BetaManagedAgentsWorkflowRunStatusEndedEvent`

    A workflow run ended. Emitted once per run, as the last of the run's `workflow_run.*` events.

    - `JsonElement Type = "workflow_run.status_ended"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required BetaManagedAgentsWorkflowRunResult Result`

      How the run ended.

      - `class BetaManagedAgentsWorkflowRunResultCompleted`

        The run's plan, a program that the agent wrote, finished. This does not say whether the work succeeded.

        - `JsonElement Type = "completed"`

      - `class BetaManagedAgentsWorkflowRunResultError`

        The run failed or reached its time limit.

        - `JsonElement Type = "error"`

        - `required BetaManagedAgentsWorkflowRunError Error`

          Why the run did not finish.

          - `class BetaManagedAgentsTimeoutWorkflowRunError`

            The run reached its time limit.

            - `JsonElement Type = "timeout_error"`

            - `required string Message`

              Short explanation written by the server. It never contains content from the run or its agents.

          - `class BetaManagedAgentsProgramWorkflowRunError`

            The plan, a program that the agent wrote, failed, or the server refused it.

            - `JsonElement Type = "program_error"`

            - `required string Message`

              Short explanation written by the server. It never contains content from the run or its agents.

          - `class BetaManagedAgentsUnknownWorkflowRunError`

            A failure that has no type of its own.

            - `JsonElement Type = "unknown_error"`

            - `required string Message`

              Short explanation written by the server. It never contains content from the run or its agents.

          - `class BetaManagedAgentsThreadLimitWorkflowRunError`

            The run exceeded the limit on the number of threads that a run can create.

            - `JsonElement Type = "thread_limit_error"`

            - `required string Message`

              Short explanation written by the server. It never contains content from the run or its agents.

          - `class BetaManagedAgentsMaxWorkflowRunsWorkflowRunError`

            No run was created, because the session was at its limit of open workflow runs, which are runs that have not ended. Only `workflow_run.error` carries this type.

            - `JsonElement Type = "max_workflow_runs_error"`

            - `required string Message`

              Short explanation written by the server. It never contains content from the run or its agents.

      - `class BetaManagedAgentsWorkflowRunResultStopped`

        The agent stopped the run.

        - `JsonElement Type = "stopped"`

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

  - `class BetaManagedAgentsWorkflowRunPhaseStartedEvent`

    A workflow run's plan entered a phase.

    - `JsonElement Type = "workflow_run.phase_started"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

    - `required string WorkflowRunPhaseID`

      Identifier of the phase, as in `phases` on the run's `workflow_run.created` event.

  - `class BetaManagedAgentsWorkflowRunPhaseEndedEvent`

    A workflow run's plan left a phase, or the run's end closed it. Emitted once for every `workflow_run.phase_started` event, before the run's `workflow_run.status_ended` event. The event does not say whether the plan finished the phase's work, or why it left.

    - `JsonElement Type = "workflow_run.phase_ended"`

    - `required string ID`

      Unique identifier for this event.

    - `required string PhaseStartedID`

      Identifier of the `workflow_run.phase_started` event that opened the phase.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

    - `required string WorkflowRunPhaseID`

      Identifier of the phase, as in `phases` on the run's `workflow_run.created` event.

  - `class BetaManagedAgentsWorkflowRunStatusRunningEvent`

    A workflow run is running. Emitted when the run starts to execute, and each time it resumes after being idle. A run that starts idle emits `workflow_run.status_idle` first.

    - `JsonElement Type = "workflow_run.status_running"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

  - `class BetaManagedAgentsWorkflowRunStatusIdleEvent`

    A workflow run is idle. Emitted each time the run goes idle, whatever the cause. If the run ends while idle, no `workflow_run.status_running` comes between this event and its `workflow_run.status_ended`.

    - `JsonElement Type = "workflow_run.status_idle"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

  - `class BetaManagedAgentsWorkflowRunErrorEvent`

    A workflow run met an error, or an error kept a run from being created. A run that ends with a `result.type` of `error` emits this event before its `workflow_run.status_ended`, with the same `error`.

    - `JsonElement Type = "workflow_run.error"`

    - `required string ID`

      Unique identifier for this event.

    - `required BetaManagedAgentsWorkflowRunError Error`

      Why the run did not finish, or was not created.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string? WorkflowRunID`

      Identifier of the run that met the error, or `null` when the error kept a run from being created.

### Example

```csharp
using System;
using Anthropic.Models.Beta.Sessions.Events;

EventStreamParams parameters = new()
{
    SessionID = "sesn_011CZkZAtmR3yMPDzynEDxu7"
};

await foreach (var betaManagedAgentsStreamSessionEvents in client.Beta.Sessions.Events.StreamStreaming(parameters))
{
    Console.WriteLine(betaManagedAgentsStreamSessionEvents);
}
```

#### Response (200)

```json
{
  "id": "sevt_011CZkZGPp1iBcp4kaQSihUm",
  "content": [
    {
      "text": "Where is my order #1234?",
      "type": "text"
    }
  ],
  "type": "user.message",
  "processed_at": "2026-03-15T10:00:00Z"
}
```

## Domain types

### Beta Managed Agents Agent Auto Evaluated Permission

- `class BetaManagedAgentsAgentAutoEvaluatedPermission: union`

  The server's per-invocation judgement under the auto permission policy. Its type always equals the event's top-level evaluated_permission. Open union: clients must tolerate unknown variants.

  - `class BetaManagedAgentsAgentAutoEvaluatedPermissionAllow`

    The server judged the invocation safe to execute without client approval.

    - `JsonElement Type = "allow"`

  - `class BetaManagedAgentsAgentAutoEvaluatedPermissionAsk`

    The server reached no judgement; the invocation is held for client approval.

    - `JsonElement Type = "ask"`

    - `required string ReasonCode`

      The judgement's grounds in registry-bound terms, for client branching and audit rather than end-user display. Open registry; currently "indeterminate" (no judgement was reached). Clients must tolerate values outside this set.

      maxLength: 64

  - `class BetaManagedAgentsAgentAutoEvaluatedPermissionDeny`

    The server judged the invocation high-risk; it does not execute and a synthetic error tool result is appended.

    - `JsonElement Type = "deny"`

    - `required string ReasonCode`

      The judgement's grounds in registry-bound terms. Open registry; currently "high_risk" (judged high-risk; the call does not run). Clients must tolerate values outside this set.

      maxLength: 64

### Beta Managed Agents Agent Auto Evaluated Permission Allow

- `class BetaManagedAgentsAgentAutoEvaluatedPermissionAllow`

  The server judged the invocation safe to execute without client approval.

  - `JsonElement Type = "allow"`

### Beta Managed Agents Agent Auto Evaluated Permission Ask

- `class BetaManagedAgentsAgentAutoEvaluatedPermissionAsk`

  The server reached no judgement; the invocation is held for client approval.

  - `JsonElement Type = "ask"`

  - `required string ReasonCode`

    The judgement's grounds in registry-bound terms, for client branching and audit rather than end-user display. Open registry; currently "indeterminate" (no judgement was reached). Clients must tolerate values outside this set.

    maxLength: 64

### Beta Managed Agents Agent Auto Evaluated Permission Deny

- `class BetaManagedAgentsAgentAutoEvaluatedPermissionDeny`

  The server judged the invocation high-risk; it does not execute and a synthetic error tool result is appended.

  - `JsonElement Type = "deny"`

  - `required string ReasonCode`

    The judgement's grounds in registry-bound terms. Open registry; currently "high_risk" (judged high-risk; the call does not run). Clients must tolerate values outside this set.

    maxLength: 64

### Beta Managed Agents Agent Custom Tool Use Event

- `class BetaManagedAgentsAgentCustomToolUseEvent`

  Event emitted when the agent calls a custom tool. The session goes idle until the client sends a `user.custom_tool_result` event with the result. The client can send it as soon as this event arrives, without waiting for `session.status_idle`.

  - `JsonElement Type = "agent.custom_tool_use"`

  - `required string ID`

    Unique identifier for this event.

  - `required IReadOnlyDictionary<string, JsonElement> Input`

    Input parameters for the tool call.

  - `required string Name`

    Name of the custom tool being called.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when this tool use was processed.

    format: date-time

  - `string? SessionThreadID`

    When set, this event was cross-posted from a subagent's thread to surface its custom tool use on the primary thread's stream. Empty on the thread's own events. Informational only: the server routes the matching `user.custom_tool_result` by `custom_tool_use_id`, so clients do not send it back.

### Beta Managed Agents Agent Evaluated Permission

- `enum BetaManagedAgentsAgentEvaluatedPermission`

  - `Allow("allow")`

  - `Ask("ask")`

  - `Deny("deny")`

### Beta Managed Agents Agent MCP Tool Result Event

- `class BetaManagedAgentsAgentMcpToolResultEvent`

  Event representing the result of an MCP tool execution.

  - `JsonElement Type = "agent.mcp_tool_result"`

  - `required string ID`

    Unique identifier for this event.

  - `required string McpToolUseID`

    The id of the `agent.mcp_tool_use` event this result corresponds to.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when this event was processed.

    format: date-time

  - `IReadOnlyList<Content> Content`

    The result content returned by the tool.

    - `class BetaManagedAgentsTextBlock`

      Regular text content.

      - `JsonElement Type = "text"`

      - `required string Text`

        The text content.

        minLength: 1

    - `class BetaManagedAgentsImageBlock`

      Image content specified directly as base64 data or as a reference via a URL.

      - `JsonElement Type = "image"`

      - `required Source Source`

        The source of the image data.

        - `class BetaManagedAgentsBase64ImageSource`

          Base64-encoded image data.

          - `JsonElement Type = "base64"`

          - `required string Data`

            Base64-encoded image data.

            minLength: 1

          - `required string MediaType`

            MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif", "image/webp").

            minLength: 1

        - `class BetaManagedAgentsUrlImageSource`

          Image referenced by URL.

          - `JsonElement Type = "url"`

          - `required string Url`

            URL of the image to fetch.

            minLength: 1

        - `class BetaManagedAgentsFileImageSource`

          Image referenced by file ID.

          - `JsonElement Type = "file"`

          - `required string FileID`

            ID of a previously uploaded file.

            minLength: 1

    - `class BetaManagedAgentsDocumentBlock`

      Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `JsonElement Type = "document"`

      - `required Source Source`

        The source of the document data.

        - `class BetaManagedAgentsBase64DocumentSource`

          Base64-encoded document data.

          - `JsonElement Type = "base64"`

          - `required string Data`

            Base64-encoded document data.

            minLength: 1

          - `required string MediaType`

            MIME type of the document (e.g., "application/pdf").

            minLength: 1

        - `class BetaManagedAgentsPlainTextDocumentSource`

          Plain text document content.

          - `JsonElement Type = "text"`

          - `required string Data`

            The plain text content.

            minLength: 1

          - `JsonElement MediaType = "text/plain"`

            MIME type of the text content. Must be "text/plain".

        - `class BetaManagedAgentsUrlDocumentSource`

          Document referenced by URL.

          - `JsonElement Type = "url"`

          - `required string Url`

            URL of the document to fetch.

            minLength: 1

        - `class BetaManagedAgentsFileDocumentSource`

          Document referenced by file ID.

          - `JsonElement Type = "file"`

          - `required string FileID`

            ID of a previously uploaded file.

            minLength: 1

      - `string? Context`

        Additional context about the document for the model.

      - `string? Title`

        The title of the document.

    - `class BetaManagedAgentsSearchResultBlock`

      A block containing a web search result.

      - `JsonElement Type = "search_result"`

      - `required BetaManagedAgentsSearchResultCitations Citations`

        Citation settings for this search result.

        - `required bool Enabled`

          Whether citations are enabled for this search result.

      - `required IReadOnlyList<BetaManagedAgentsSearchResultContent> Content`

        Array of text content blocks from the search result.

        - `JsonElement Type = "text"`

        - `required string Text`

          The text content.

          minLength: 1

      - `required string Source`

        The URL source of the search result.

        minLength: 1

      - `required string Title`

        The title of the search result.

        minLength: 1

  - `bool? IsError`

    Whether the tool execution resulted in an error.

### Beta Managed Agents Agent MCP Tool Use Event

- `class BetaManagedAgentsAgentMcpToolUseEvent`

  Event emitted when the agent invokes a tool provided by an MCP server.

  - `JsonElement Type = "agent.mcp_tool_use"`

  - `required string ID`

    Unique identifier for this event.

  - `required IReadOnlyDictionary<string, JsonElement> Input`

    Input parameters for the tool call.

  - `required string McpServerName`

    Name of the MCP server providing the tool.

  - `required string Name`

    Name of the MCP tool being used.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when this event was processed.

    format: date-time

  - `BetaManagedAgentsAgentEvaluatedPermission EvaluatedPermission`

    The evaluated permission policy for this tool invocation.

    - `Allow("allow")`

    - `Ask("ask")`

    - `Deny("deny")`

  - `BetaManagedAgentsAgentToolEvaluation Evaluation`

    Which resolved permission_policy produced evaluated_permission: always_allow, always_ask, or auto (with the server's per-invocation judgement). Absent only when the server refused the call before any policy applied (for example, the named tool is not enabled in the session); such a refusal has evaluated_permission deny. An event recorded before this field existed reads as the arm its evaluated_permission implies (always_allow for allow, always_ask for ask).

    - `class BetaManagedAgentsAgentToolEvaluationAlwaysAllow`

      The resolved permission_policy was always_allow; accompanies evaluated_permission "allow".

      - `JsonElement Type = "always_allow"`

    - `class BetaManagedAgentsAgentToolEvaluationAlwaysAsk`

      The resolved permission_policy was always_ask; accompanies evaluated_permission "ask".

      - `JsonElement Type = "always_ask"`

    - `class BetaManagedAgentsAgentToolEvaluationAuto`

      The resolved permission_policy was auto: the server judged this invocation individually.

      - `JsonElement Type = "auto"`

      - `required BetaManagedAgentsAgentAutoEvaluatedPermission EvaluatedPermission`

        The server's judgement for this invocation.

        - `class BetaManagedAgentsAgentAutoEvaluatedPermissionAllow`

          The server judged the invocation safe to execute without client approval.

          - `JsonElement Type = "allow"`

        - `class BetaManagedAgentsAgentAutoEvaluatedPermissionAsk`

          The server reached no judgement; the invocation is held for client approval.

          - `JsonElement Type = "ask"`

          - `required string ReasonCode`

            The judgement's grounds in registry-bound terms, for client branching and audit rather than end-user display. Open registry; currently "indeterminate" (no judgement was reached). Clients must tolerate values outside this set.

            maxLength: 64

        - `class BetaManagedAgentsAgentAutoEvaluatedPermissionDeny`

          The server judged the invocation high-risk; it does not execute and a synthetic error tool result is appended.

          - `JsonElement Type = "deny"`

          - `required string ReasonCode`

            The judgement's grounds in registry-bound terms. Open registry; currently "high_risk" (judged high-risk; the call does not run). Clients must tolerate values outside this set.

            maxLength: 64

  - `string? SessionThreadID`

    When set, this event was cross-posted from a subagent's thread to surface its permission request on the primary thread's stream. Empty on the thread's own events. Informational only: the server routes the matching `user.tool_confirmation` by `tool_use_id`, so clients do not send it back.

### Beta Managed Agents Agent Message Event

- `class BetaManagedAgentsAgentMessageEvent`

  An agent response event in the session conversation.

  - `JsonElement Type = "agent.message"`

  - `required string ID`

    Unique identifier for this event.

  - `required IReadOnlyList<Content> Content`

    Array of text blocks comprising the agent response.

    - `class BetaManagedAgentsTextBlock`

      Regular text content.

      - `JsonElement Type = "text"`

      - `required string Text`

        The text content.

        minLength: 1

    - `class BetaManagedAgentsRedactedBlock`

      Placeholder for content withheld by Anthropic model policy.

      - `JsonElement Type = "redacted"`

  - `required DateTimeOffset ProcessedAt`

    Timestamp when this response was generated.

    format: date-time

### Beta Managed Agents Agent Thinking Event

- `class BetaManagedAgentsAgentThinkingEvent`

  Indicates the agent is making forward progress via extended thinking. A progress signal, not a content carrier.

  - `JsonElement Type = "agent.thinking"`

  - `required string ID`

    Unique identifier for this event.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when this thinking was produced.

    format: date-time

### Beta Managed Agents Agent Thread Context Compacted Event

- `class BetaManagedAgentsAgentThreadContextCompactedEvent`

  Indicates that context compaction (summarization) occurred during the session.

  - `JsonElement Type = "agent.thread_context_compacted"`

  - `required string ID`

    Unique identifier for this event.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when compaction was processed.

    format: date-time

### Beta Managed Agents Agent Thread Message Received Event

- `class BetaManagedAgentsAgentThreadMessageReceivedEvent`

  Delivery event written to the target thread's input stream when an agent-to-agent message arrives.

  - `JsonElement Type = "agent.thread_message_received"`

  - `required string ID`

    Unique identifier for this event.

  - `required IReadOnlyList<Content> Content`

    Message content blocks.

    - `class BetaManagedAgentsTextBlock`

      Regular text content.

      - `JsonElement Type = "text"`

      - `required string Text`

        The text content.

        minLength: 1

    - `class BetaManagedAgentsImageBlock`

      Image content specified directly as base64 data or as a reference via a URL.

      - `JsonElement Type = "image"`

      - `required Source Source`

        The source of the image data.

        - `class BetaManagedAgentsBase64ImageSource`

          Base64-encoded image data.

          - `JsonElement Type = "base64"`

          - `required string Data`

            Base64-encoded image data.

            minLength: 1

          - `required string MediaType`

            MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif", "image/webp").

            minLength: 1

        - `class BetaManagedAgentsUrlImageSource`

          Image referenced by URL.

          - `JsonElement Type = "url"`

          - `required string Url`

            URL of the image to fetch.

            minLength: 1

        - `class BetaManagedAgentsFileImageSource`

          Image referenced by file ID.

          - `JsonElement Type = "file"`

          - `required string FileID`

            ID of a previously uploaded file.

            minLength: 1

    - `class BetaManagedAgentsDocumentBlock`

      Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `JsonElement Type = "document"`

      - `required Source Source`

        The source of the document data.

        - `class BetaManagedAgentsBase64DocumentSource`

          Base64-encoded document data.

          - `JsonElement Type = "base64"`

          - `required string Data`

            Base64-encoded document data.

            minLength: 1

          - `required string MediaType`

            MIME type of the document (e.g., "application/pdf").

            minLength: 1

        - `class BetaManagedAgentsPlainTextDocumentSource`

          Plain text document content.

          - `JsonElement Type = "text"`

          - `required string Data`

            The plain text content.

            minLength: 1

          - `JsonElement MediaType = "text/plain"`

            MIME type of the text content. Must be "text/plain".

        - `class BetaManagedAgentsUrlDocumentSource`

          Document referenced by URL.

          - `JsonElement Type = "url"`

          - `required string Url`

            URL of the document to fetch.

            minLength: 1

        - `class BetaManagedAgentsFileDocumentSource`

          Document referenced by file ID.

          - `JsonElement Type = "file"`

          - `required string FileID`

            ID of a previously uploaded file.

            minLength: 1

      - `string? Context`

        Additional context about the document for the model.

      - `string? Title`

        The title of the document.

    - `class BetaManagedAgentsRedactedBlock`

      Placeholder for content withheld by Anthropic model policy.

      - `JsonElement Type = "redacted"`

  - `required string FromSessionThreadID`

    Public `sthr_` ID of the thread that sent the message.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when the message was received.

    format: date-time

  - `string? FromAgentName`

    Name of the callable agent this message came from. Absent when received from the primary agent.

### Beta Managed Agents Agent Thread Message Sent Event

- `class BetaManagedAgentsAgentThreadMessageSentEvent`

  Observability event emitted to the sender's output stream when an agent-to-agent message is sent.

  - `JsonElement Type = "agent.thread_message_sent"`

  - `required string ID`

    Unique identifier for this event.

  - `required IReadOnlyList<Content> Content`

    Message content blocks.

    - `class BetaManagedAgentsTextBlock`

      Regular text content.

      - `JsonElement Type = "text"`

      - `required string Text`

        The text content.

        minLength: 1

    - `class BetaManagedAgentsImageBlock`

      Image content specified directly as base64 data or as a reference via a URL.

      - `JsonElement Type = "image"`

      - `required Source Source`

        The source of the image data.

        - `class BetaManagedAgentsBase64ImageSource`

          Base64-encoded image data.

          - `JsonElement Type = "base64"`

          - `required string Data`

            Base64-encoded image data.

            minLength: 1

          - `required string MediaType`

            MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif", "image/webp").

            minLength: 1

        - `class BetaManagedAgentsUrlImageSource`

          Image referenced by URL.

          - `JsonElement Type = "url"`

          - `required string Url`

            URL of the image to fetch.

            minLength: 1

        - `class BetaManagedAgentsFileImageSource`

          Image referenced by file ID.

          - `JsonElement Type = "file"`

          - `required string FileID`

            ID of a previously uploaded file.

            minLength: 1

    - `class BetaManagedAgentsDocumentBlock`

      Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `JsonElement Type = "document"`

      - `required Source Source`

        The source of the document data.

        - `class BetaManagedAgentsBase64DocumentSource`

          Base64-encoded document data.

          - `JsonElement Type = "base64"`

          - `required string Data`

            Base64-encoded document data.

            minLength: 1

          - `required string MediaType`

            MIME type of the document (e.g., "application/pdf").

            minLength: 1

        - `class BetaManagedAgentsPlainTextDocumentSource`

          Plain text document content.

          - `JsonElement Type = "text"`

          - `required string Data`

            The plain text content.

            minLength: 1

          - `JsonElement MediaType = "text/plain"`

            MIME type of the text content. Must be "text/plain".

        - `class BetaManagedAgentsUrlDocumentSource`

          Document referenced by URL.

          - `JsonElement Type = "url"`

          - `required string Url`

            URL of the document to fetch.

            minLength: 1

        - `class BetaManagedAgentsFileDocumentSource`

          Document referenced by file ID.

          - `JsonElement Type = "file"`

          - `required string FileID`

            ID of a previously uploaded file.

            minLength: 1

      - `string? Context`

        Additional context about the document for the model.

      - `string? Title`

        The title of the document.

    - `class BetaManagedAgentsRedactedBlock`

      Placeholder for content withheld by Anthropic model policy.

      - `JsonElement Type = "redacted"`

  - `required DateTimeOffset ProcessedAt`

    Timestamp when the message was sent.

    format: date-time

  - `required string ToSessionThreadID`

    Public `sthr_` ID of the thread the message was sent to.

  - `string? ToAgentName`

    Name of the callable agent this message was sent to. Absent when sent to the primary agent.

### Beta Managed Agents Agent Tool Evaluation

- `class BetaManagedAgentsAgentToolEvaluation: union`

  Names the resolved permission_policy that produced evaluated_permission, and under auto carries the judgement. Open union: clients must tolerate unknown variants.

  - `class BetaManagedAgentsAgentToolEvaluationAlwaysAllow`

    The resolved permission_policy was always_allow; accompanies evaluated_permission "allow".

    - `JsonElement Type = "always_allow"`

  - `class BetaManagedAgentsAgentToolEvaluationAlwaysAsk`

    The resolved permission_policy was always_ask; accompanies evaluated_permission "ask".

    - `JsonElement Type = "always_ask"`

  - `class BetaManagedAgentsAgentToolEvaluationAuto`

    The resolved permission_policy was auto: the server judged this invocation individually.

    - `JsonElement Type = "auto"`

    - `required BetaManagedAgentsAgentAutoEvaluatedPermission EvaluatedPermission`

      The server's judgement for this invocation.

      - `class BetaManagedAgentsAgentAutoEvaluatedPermissionAllow`

        The server judged the invocation safe to execute without client approval.

        - `JsonElement Type = "allow"`

      - `class BetaManagedAgentsAgentAutoEvaluatedPermissionAsk`

        The server reached no judgement; the invocation is held for client approval.

        - `JsonElement Type = "ask"`

        - `required string ReasonCode`

          The judgement's grounds in registry-bound terms, for client branching and audit rather than end-user display. Open registry; currently "indeterminate" (no judgement was reached). Clients must tolerate values outside this set.

          maxLength: 64

      - `class BetaManagedAgentsAgentAutoEvaluatedPermissionDeny`

        The server judged the invocation high-risk; it does not execute and a synthetic error tool result is appended.

        - `JsonElement Type = "deny"`

        - `required string ReasonCode`

          The judgement's grounds in registry-bound terms. Open registry; currently "high_risk" (judged high-risk; the call does not run). Clients must tolerate values outside this set.

          maxLength: 64

### Beta Managed Agents Agent Tool Evaluation Always Allow

- `class BetaManagedAgentsAgentToolEvaluationAlwaysAllow`

  The resolved permission_policy was always_allow; accompanies evaluated_permission "allow".

  - `JsonElement Type = "always_allow"`

### Beta Managed Agents Agent Tool Evaluation Always Ask

- `class BetaManagedAgentsAgentToolEvaluationAlwaysAsk`

  The resolved permission_policy was always_ask; accompanies evaluated_permission "ask".

  - `JsonElement Type = "always_ask"`

### Beta Managed Agents Agent Tool Evaluation Auto

- `class BetaManagedAgentsAgentToolEvaluationAuto`

  The resolved permission_policy was auto: the server judged this invocation individually.

  - `JsonElement Type = "auto"`

  - `required BetaManagedAgentsAgentAutoEvaluatedPermission EvaluatedPermission`

    The server's judgement for this invocation.

    - `class BetaManagedAgentsAgentAutoEvaluatedPermissionAllow`

      The server judged the invocation safe to execute without client approval.

      - `JsonElement Type = "allow"`

    - `class BetaManagedAgentsAgentAutoEvaluatedPermissionAsk`

      The server reached no judgement; the invocation is held for client approval.

      - `JsonElement Type = "ask"`

      - `required string ReasonCode`

        The judgement's grounds in registry-bound terms, for client branching and audit rather than end-user display. Open registry; currently "indeterminate" (no judgement was reached). Clients must tolerate values outside this set.

        maxLength: 64

    - `class BetaManagedAgentsAgentAutoEvaluatedPermissionDeny`

      The server judged the invocation high-risk; it does not execute and a synthetic error tool result is appended.

      - `JsonElement Type = "deny"`

      - `required string ReasonCode`

        The judgement's grounds in registry-bound terms. Open registry; currently "high_risk" (judged high-risk; the call does not run). Clients must tolerate values outside this set.

        maxLength: 64

### Beta Managed Agents Agent Tool Result Event

- `class BetaManagedAgentsAgentToolResultEvent`

  Event representing the result of an agent tool execution.

  - `JsonElement Type = "agent.tool_result"`

  - `required string ID`

    Unique identifier for this event.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when this event was processed.

    format: date-time

  - `required string ToolUseID`

    The id of the `agent.tool_use` event this result corresponds to.

  - `IReadOnlyList<Content> Content`

    The result content returned by the tool.

    - `class BetaManagedAgentsTextBlock`

      Regular text content.

      - `JsonElement Type = "text"`

      - `required string Text`

        The text content.

        minLength: 1

    - `class BetaManagedAgentsImageBlock`

      Image content specified directly as base64 data or as a reference via a URL.

      - `JsonElement Type = "image"`

      - `required Source Source`

        The source of the image data.

        - `class BetaManagedAgentsBase64ImageSource`

          Base64-encoded image data.

          - `JsonElement Type = "base64"`

          - `required string Data`

            Base64-encoded image data.

            minLength: 1

          - `required string MediaType`

            MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif", "image/webp").

            minLength: 1

        - `class BetaManagedAgentsUrlImageSource`

          Image referenced by URL.

          - `JsonElement Type = "url"`

          - `required string Url`

            URL of the image to fetch.

            minLength: 1

        - `class BetaManagedAgentsFileImageSource`

          Image referenced by file ID.

          - `JsonElement Type = "file"`

          - `required string FileID`

            ID of a previously uploaded file.

            minLength: 1

    - `class BetaManagedAgentsDocumentBlock`

      Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `JsonElement Type = "document"`

      - `required Source Source`

        The source of the document data.

        - `class BetaManagedAgentsBase64DocumentSource`

          Base64-encoded document data.

          - `JsonElement Type = "base64"`

          - `required string Data`

            Base64-encoded document data.

            minLength: 1

          - `required string MediaType`

            MIME type of the document (e.g., "application/pdf").

            minLength: 1

        - `class BetaManagedAgentsPlainTextDocumentSource`

          Plain text document content.

          - `JsonElement Type = "text"`

          - `required string Data`

            The plain text content.

            minLength: 1

          - `JsonElement MediaType = "text/plain"`

            MIME type of the text content. Must be "text/plain".

        - `class BetaManagedAgentsUrlDocumentSource`

          Document referenced by URL.

          - `JsonElement Type = "url"`

          - `required string Url`

            URL of the document to fetch.

            minLength: 1

        - `class BetaManagedAgentsFileDocumentSource`

          Document referenced by file ID.

          - `JsonElement Type = "file"`

          - `required string FileID`

            ID of a previously uploaded file.

            minLength: 1

      - `string? Context`

        Additional context about the document for the model.

      - `string? Title`

        The title of the document.

    - `class BetaManagedAgentsSearchResultBlock`

      A block containing a web search result.

      - `JsonElement Type = "search_result"`

      - `required BetaManagedAgentsSearchResultCitations Citations`

        Citation settings for this search result.

        - `required bool Enabled`

          Whether citations are enabled for this search result.

      - `required IReadOnlyList<BetaManagedAgentsSearchResultContent> Content`

        Array of text content blocks from the search result.

        - `JsonElement Type = "text"`

        - `required string Text`

          The text content.

          minLength: 1

      - `required string Source`

        The URL source of the search result.

        minLength: 1

      - `required string Title`

        The title of the search result.

        minLength: 1

  - `bool? IsError`

    Whether the tool execution resulted in an error.

### Beta Managed Agents Agent Tool Use Event

- `class BetaManagedAgentsAgentToolUseEvent`

  Event emitted when the agent invokes a built-in agent tool.

  - `JsonElement Type = "agent.tool_use"`

  - `required string ID`

    Unique identifier for this event.

  - `required IReadOnlyDictionary<string, JsonElement> Input`

    Input parameters for the tool call.

  - `required string Name`

    Name of the agent tool being used.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when this event was processed.

    format: date-time

  - `BetaManagedAgentsAgentEvaluatedPermission EvaluatedPermission`

    The evaluated permission policy for this tool invocation.

    - `Allow("allow")`

    - `Ask("ask")`

    - `Deny("deny")`

  - `BetaManagedAgentsAgentToolEvaluation Evaluation`

    Which resolved permission_policy produced evaluated_permission: always_allow, always_ask, or auto (with the server's per-invocation judgement). Absent only when the server refused the call before any policy applied (for example, the named tool is not enabled in the session); such a refusal has evaluated_permission deny. An event recorded before this field existed reads as the arm its evaluated_permission implies (always_allow for allow, always_ask for ask).

    - `class BetaManagedAgentsAgentToolEvaluationAlwaysAllow`

      The resolved permission_policy was always_allow; accompanies evaluated_permission "allow".

      - `JsonElement Type = "always_allow"`

    - `class BetaManagedAgentsAgentToolEvaluationAlwaysAsk`

      The resolved permission_policy was always_ask; accompanies evaluated_permission "ask".

      - `JsonElement Type = "always_ask"`

    - `class BetaManagedAgentsAgentToolEvaluationAuto`

      The resolved permission_policy was auto: the server judged this invocation individually.

      - `JsonElement Type = "auto"`

      - `required BetaManagedAgentsAgentAutoEvaluatedPermission EvaluatedPermission`

        The server's judgement for this invocation.

        - `class BetaManagedAgentsAgentAutoEvaluatedPermissionAllow`

          The server judged the invocation safe to execute without client approval.

          - `JsonElement Type = "allow"`

        - `class BetaManagedAgentsAgentAutoEvaluatedPermissionAsk`

          The server reached no judgement; the invocation is held for client approval.

          - `JsonElement Type = "ask"`

          - `required string ReasonCode`

            The judgement's grounds in registry-bound terms, for client branching and audit rather than end-user display. Open registry; currently "indeterminate" (no judgement was reached). Clients must tolerate values outside this set.

            maxLength: 64

        - `class BetaManagedAgentsAgentAutoEvaluatedPermissionDeny`

          The server judged the invocation high-risk; it does not execute and a synthetic error tool result is appended.

          - `JsonElement Type = "deny"`

          - `required string ReasonCode`

            The judgement's grounds in registry-bound terms. Open registry; currently "high_risk" (judged high-risk; the call does not run). Clients must tolerate values outside this set.

            maxLength: 64

  - `string? SessionThreadID`

    When set, this event was cross-posted from a subagent's thread to surface its permission request on the primary thread's stream. Empty on the thread's own events. Informational only: the server routes the matching `user.tool_confirmation` or `user.tool_result` by `tool_use_id`, so clients do not send it back.

### Beta Managed Agents Base64 Document Source

- `class BetaManagedAgentsBase64DocumentSource`

  Base64-encoded document data.

  - `JsonElement Type = "base64"`

  - `required string Data`

    Base64-encoded document data.

    minLength: 1

  - `required string MediaType`

    MIME type of the document (e.g., "application/pdf").

    minLength: 1

### Beta Managed Agents Base64 Image Source

- `class BetaManagedAgentsBase64ImageSource`

  Base64-encoded image data.

  - `JsonElement Type = "base64"`

  - `required string Data`

    Base64-encoded image data.

    minLength: 1

  - `required string MediaType`

    MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif", "image/webp").

    minLength: 1

### Beta Managed Agents Billing Error

- `class BetaManagedAgentsBillingError`

  The caller's organization or workspace cannot make model requests — out of credits or spend limit reached. Retrying with the same credentials will not succeed; the caller must resolve the billing state.

  - `JsonElement Type = "billing_error"`

  - `required string Message`

    Human-readable error description.

  - `required RetryStatus RetryStatus`

    What the client should do next.

    - `class BetaManagedAgentsRetryStatusRetrying`

      The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

      - `JsonElement Type = "retrying"`

    - `class BetaManagedAgentsRetryStatusExhausted`

      This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

      - `JsonElement Type = "exhausted"`

    - `class BetaManagedAgentsRetryStatusTerminal`

      The session encountered a terminal error and will transition to `terminated` state.

      - `JsonElement Type = "terminal"`

### Beta Managed Agents Compaction Limit Reached Error

- `class BetaManagedAgentsCompactionLimitReachedError`

  The turn stopped because the context was compacted the maximum number of times in a row without the model producing a message or a tool call, not because a request failed. The thread goes idle with `stop_reason: retries_exhausted` (a child thread then terminates); the next `user.message` starts a new turn.

  - `JsonElement Type = "compaction_limit_reached_error"`

  - `required string Message`

    Human-readable error description.

  - `required RetryStatus RetryStatus`

    What the client should do next.

    - `class BetaManagedAgentsRetryStatusRetrying`

      The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

      - `JsonElement Type = "retrying"`

    - `class BetaManagedAgentsRetryStatusExhausted`

      This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

      - `JsonElement Type = "exhausted"`

    - `class BetaManagedAgentsRetryStatusTerminal`

      The session encountered a terminal error and will transition to `terminated` state.

      - `JsonElement Type = "terminal"`

### Beta Managed Agents Credential Host Unreachable Error

- `class BetaManagedAgentsCredentialHostUnreachableError`

  An `environment_variable` credential's `auth.networking.allowed_hosts` includes a host the environment's network policy does not permit.

  - `JsonElement Type = "credential_host_unreachable_error"`

  - `required string CredentialID`

    ID of the affected credential.

  - `required string Message`

    Human-readable error description.

  - `required RetryStatus RetryStatus`

    What the client should do next.

    - `class BetaManagedAgentsRetryStatusRetrying`

      The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

      - `JsonElement Type = "retrying"`

    - `class BetaManagedAgentsRetryStatusExhausted`

      This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

      - `JsonElement Type = "exhausted"`

    - `class BetaManagedAgentsRetryStatusTerminal`

      The session encountered a terminal error and will transition to `terminated` state.

      - `JsonElement Type = "terminal"`

  - `required string VaultID`

    ID of the vault containing the affected credential.

### Beta Managed Agents Document Block

- `class BetaManagedAgentsDocumentBlock`

  Document content, either specified directly as base64 data, as text, or as a reference via a URL.

  - `JsonElement Type = "document"`

  - `required Source Source`

    The source of the document data.

    - `class BetaManagedAgentsBase64DocumentSource`

      Base64-encoded document data.

      - `JsonElement Type = "base64"`

      - `required string Data`

        Base64-encoded document data.

        minLength: 1

      - `required string MediaType`

        MIME type of the document (e.g., "application/pdf").

        minLength: 1

    - `class BetaManagedAgentsPlainTextDocumentSource`

      Plain text document content.

      - `JsonElement Type = "text"`

      - `required string Data`

        The plain text content.

        minLength: 1

      - `JsonElement MediaType = "text/plain"`

        MIME type of the text content. Must be "text/plain".

    - `class BetaManagedAgentsUrlDocumentSource`

      Document referenced by URL.

      - `JsonElement Type = "url"`

      - `required string Url`

        URL of the document to fetch.

        minLength: 1

    - `class BetaManagedAgentsFileDocumentSource`

      Document referenced by file ID.

      - `JsonElement Type = "file"`

      - `required string FileID`

        ID of a previously uploaded file.

        minLength: 1

  - `string? Context`

    Additional context about the document for the model.

  - `string? Title`

    The title of the document.

### Beta Managed Agents Event Params

- `class BetaManagedAgentsEventParams: union`

  Union type for event parameters that can be sent to a session.

  - `class BetaManagedAgentsUserMessageEventParams`

    Parameters for sending a user message to the session.

    - `JsonElement Type = "user.message"`

    - `required IReadOnlyList<Content> Content`

      Array of content blocks for the user message.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

        - `JsonElement Type = "text"`

        - `required string Text`

          The text content.

          minLength: 1

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

        - `JsonElement Type = "image"`

        - `required Source Source`

          The source of the image data.

          - `class BetaManagedAgentsBase64ImageSource`

            Base64-encoded image data.

            - `JsonElement Type = "base64"`

            - `required string Data`

              Base64-encoded image data.

              minLength: 1

            - `required string MediaType`

              MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif", "image/webp").

              minLength: 1

          - `class BetaManagedAgentsUrlImageSource`

            Image referenced by URL.

            - `JsonElement Type = "url"`

            - `required string Url`

              URL of the image to fetch.

              minLength: 1

          - `class BetaManagedAgentsFileImageSource`

            Image referenced by file ID.

            - `JsonElement Type = "file"`

            - `required string FileID`

              ID of a previously uploaded file.

              minLength: 1

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

        - `JsonElement Type = "document"`

        - `required Source Source`

          The source of the document data.

          - `class BetaManagedAgentsBase64DocumentSource`

            Base64-encoded document data.

            - `JsonElement Type = "base64"`

            - `required string Data`

              Base64-encoded document data.

              minLength: 1

            - `required string MediaType`

              MIME type of the document (e.g., "application/pdf").

              minLength: 1

          - `class BetaManagedAgentsPlainTextDocumentSource`

            Plain text document content.

            - `JsonElement Type = "text"`

            - `required string Data`

              The plain text content.

              minLength: 1

            - `JsonElement MediaType = "text/plain"`

              MIME type of the text content. Must be "text/plain".

          - `class BetaManagedAgentsUrlDocumentSource`

            Document referenced by URL.

            - `JsonElement Type = "url"`

            - `required string Url`

              URL of the document to fetch.

              minLength: 1

          - `class BetaManagedAgentsFileDocumentSource`

            Document referenced by file ID.

            - `JsonElement Type = "file"`

            - `required string FileID`

              ID of a previously uploaded file.

              minLength: 1

        - `string? Context`

          Additional context about the document for the model.

        - `string? Title`

          The title of the document.

      - `class BetaManagedAgentsRedactedBlock`

        Placeholder for content withheld by Anthropic model policy.

        - `JsonElement Type = "redacted"`

  - `class BetaManagedAgentsUserInterruptEventParams`

    Parameters for sending an interrupt to pause the agent.

    - `JsonElement Type = "user.interrupt"`

    - `string? SessionThreadID`

      If absent, interrupts every non-archived thread in a multiagent session (or the primary alone in a single-agent session). If present, interrupts only the named thread.

  - `class BetaManagedAgentsUserToolConfirmationEventParams`

    Parameters for confirming or denying a tool execution request.

    - `JsonElement Type = "user.tool_confirmation"`

    - `required Result Result`

      The confirmation result: 'allow' or 'deny'.

      - `Allow("allow")`

      - `Deny("deny")`

    - `required string ToolUseID`

      The id of the `agent.tool_use` or `agent.mcp_tool_use` event this result corresponds to, which can be found in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

      minLength: 1, maxLength: 128

    - `string? DenyMessage`

      Optional message providing context for a 'deny' decision. Only allowed when result is 'deny'.

      maxLength: 10000

  - `class BetaManagedAgentsUserCustomToolResultEventParams`

    Parameters for providing the result of a custom tool execution.

    - `JsonElement Type = "user.custom_tool_result"`

    - `required string CustomToolUseID`

      The id of the `agent.custom_tool_use` event this result corresponds to. It is also listed in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

      minLength: 1, maxLength: 128

    - `IReadOnlyList<Content> Content`

      The result content returned by the tool.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsSearchResultBlock`

        A block containing a web search result.

        - `JsonElement Type = "search_result"`

        - `required BetaManagedAgentsSearchResultCitations Citations`

          Citation settings for this search result.

          - `required bool Enabled`

            Whether citations are enabled for this search result.

        - `required IReadOnlyList<BetaManagedAgentsSearchResultContent> Content`

          Array of text content blocks from the search result.

          - `JsonElement Type = "text"`

          - `required string Text`

            The text content.

            minLength: 1

        - `required string Source`

          The URL source of the search result.

          minLength: 1

        - `required string Title`

          The title of the search result.

          minLength: 1

    - `bool? IsError`

      Whether the tool execution resulted in an error.

  - `class BetaManagedAgentsUserDefineOutcomeEventParams`

    Parameters for defining an outcome the agent should work toward. The agent begins work on receipt.

    - `JsonElement Type = "user.define_outcome"`

    - `required string Description`

      What the agent should produce. This is the task specification.

    - `required Rubric Rubric`

      How to grade the outcome. Text or file reference.

      - `class BetaManagedAgentsFileRubricParams`

        Rubric referenced by a file uploaded via the Files API.

        - `JsonElement Type = "file"`

        - `required string FileID`

          ID of the rubric file.

      - `class BetaManagedAgentsTextRubricParams`

        Rubric content provided inline as text.

        - `JsonElement Type = "text"`

        - `required string Content`

          Rubric content. Plain text or markdown — the grader treats it as freeform text. Maximum 262144 characters.

          maxLength: 262144

    - `int? MaxIterations`

      Eval→revision cycles before giving up. Default 3, max 20.

      format: int32

  - `class BetaManagedAgentsUserToolResultEventParams`

    Parameters for providing the result of an agent-toolset tool execution. Only valid on `self_hosted` environments, where sandbox-routed tools are executed by the client rather than the server.

    - `JsonElement Type = "user.tool_result"`

    - `required string ToolUseID`

      The id of the `agent.tool_use` event this result corresponds to, which can be found in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

      minLength: 1, maxLength: 128

    - `IReadOnlyList<Content> Content`

      The result content returned by the tool.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsSearchResultBlock`

        A block containing a web search result.

    - `bool? IsError`

      Whether the tool execution resulted in an error.

  - `class BetaManagedAgentsSystemMessageEventParams`

    Privileged context for the accompanying turn and all subsequent turns, appended to the session's system context as a `role: "system"` turn rather than replacing the top-level system prompt. At most one per request: it must be the final event and immediately follow the `user.message`, `user.tool_result`, or `user.custom_tool_result` it accompanies. Only supported on models that accept mid-conversation system messages.

    - `JsonElement Type = "system.message"`

    - `required IReadOnlyList<BetaManagedAgentsSystemContentBlock> Content`

      System content blocks to append. Text-only.

      - `JsonElement Type = "text"`

      - `required string Text`

        The text content.

        minLength: 1

### Beta Managed Agents File Document Source

- `class BetaManagedAgentsFileDocumentSource`

  Document referenced by file ID.

  - `JsonElement Type = "file"`

  - `required string FileID`

    ID of a previously uploaded file.

    minLength: 1

### Beta Managed Agents File Image Source

- `class BetaManagedAgentsFileImageSource`

  Image referenced by file ID.

  - `JsonElement Type = "file"`

  - `required string FileID`

    ID of a previously uploaded file.

    minLength: 1

### Beta Managed Agents File Rubric

- `class BetaManagedAgentsFileRubric`

  Rubric referenced by a file uploaded via the Files API.

  - `JsonElement Type = "file"`

  - `required string FileID`

    ID of the rubric file.

### Beta Managed Agents File Rubric Params

- `class BetaManagedAgentsFileRubricParams`

  Rubric referenced by a file uploaded via the Files API.

  - `JsonElement Type = "file"`

  - `required string FileID`

    ID of the rubric file.

### Beta Managed Agents Image Block

- `class BetaManagedAgentsImageBlock`

  Image content specified directly as base64 data or as a reference via a URL.

  - `JsonElement Type = "image"`

  - `required Source Source`

    The source of the image data.

    - `class BetaManagedAgentsBase64ImageSource`

      Base64-encoded image data.

      - `JsonElement Type = "base64"`

      - `required string Data`

        Base64-encoded image data.

        minLength: 1

      - `required string MediaType`

        MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif", "image/webp").

        minLength: 1

    - `class BetaManagedAgentsUrlImageSource`

      Image referenced by URL.

      - `JsonElement Type = "url"`

      - `required string Url`

        URL of the image to fetch.

        minLength: 1

    - `class BetaManagedAgentsFileImageSource`

      Image referenced by file ID.

      - `JsonElement Type = "file"`

      - `required string FileID`

        ID of a previously uploaded file.

        minLength: 1

### Beta Managed Agents Max Workflow Runs Workflow Run Error

- `class BetaManagedAgentsMaxWorkflowRunsWorkflowRunError`

  No run was created, because the session was at its limit of open workflow runs, which are runs that have not ended. Only `workflow_run.error` carries this type.

  - `JsonElement Type = "max_workflow_runs_error"`

  - `required string Message`

    Short explanation written by the server. It never contains content from the run or its agents.

### Beta Managed Agents MCP Authentication Failed Error

- `class BetaManagedAgentsMcpAuthenticationFailedError`

  Authentication to an MCP server failed.

  - `JsonElement Type = "mcp_authentication_failed_error"`

  - `required string McpServerName`

    Name of the MCP server that failed authentication.

  - `required string Message`

    Human-readable error description.

  - `required RetryStatus RetryStatus`

    What the client should do next.

    - `class BetaManagedAgentsRetryStatusRetrying`

      The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

      - `JsonElement Type = "retrying"`

    - `class BetaManagedAgentsRetryStatusExhausted`

      This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

      - `JsonElement Type = "exhausted"`

    - `class BetaManagedAgentsRetryStatusTerminal`

      The session encountered a terminal error and will transition to `terminated` state.

      - `JsonElement Type = "terminal"`

### Beta Managed Agents MCP Connection Failed Error

- `class BetaManagedAgentsMcpConnectionFailedError`

  Failed to connect to an MCP server.

  - `JsonElement Type = "mcp_connection_failed_error"`

  - `required string McpServerName`

    Name of the MCP server that failed to connect.

  - `required string Message`

    Human-readable error description.

  - `required RetryStatus RetryStatus`

    What the client should do next.

    - `class BetaManagedAgentsRetryStatusRetrying`

      The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

      - `JsonElement Type = "retrying"`

    - `class BetaManagedAgentsRetryStatusExhausted`

      This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

      - `JsonElement Type = "exhausted"`

    - `class BetaManagedAgentsRetryStatusTerminal`

      The session encountered a terminal error and will transition to `terminated` state.

      - `JsonElement Type = "terminal"`

### Beta Managed Agents Model Overloaded Error

- `class BetaManagedAgentsModelOverloadedError`

  The model is currently overloaded. Emitted after automatic retries are exhausted.

  - `JsonElement Type = "model_overloaded_error"`

  - `required string Message`

    Human-readable error description.

  - `required RetryStatus RetryStatus`

    What the client should do next.

    - `class BetaManagedAgentsRetryStatusRetrying`

      The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

      - `JsonElement Type = "retrying"`

    - `class BetaManagedAgentsRetryStatusExhausted`

      This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

      - `JsonElement Type = "exhausted"`

    - `class BetaManagedAgentsRetryStatusTerminal`

      The session encountered a terminal error and will transition to `terminated` state.

      - `JsonElement Type = "terminal"`

### Beta Managed Agents Model Rate Limited Error

- `class BetaManagedAgentsModelRateLimitedError`

  The model request was rate-limited.

  - `JsonElement Type = "model_rate_limited_error"`

  - `required string Message`

    Human-readable error description.

  - `required RetryStatus RetryStatus`

    What the client should do next.

    - `class BetaManagedAgentsRetryStatusRetrying`

      The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

      - `JsonElement Type = "retrying"`

    - `class BetaManagedAgentsRetryStatusExhausted`

      This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

      - `JsonElement Type = "exhausted"`

    - `class BetaManagedAgentsRetryStatusTerminal`

      The session encountered a terminal error and will transition to `terminated` state.

      - `JsonElement Type = "terminal"`

### Beta Managed Agents Model Request Failed Error

- `class BetaManagedAgentsModelRequestFailedError`

  A model request failed for a reason other than overload or rate-limiting.

  - `JsonElement Type = "model_request_failed_error"`

  - `required string Message`

    Human-readable error description.

  - `required RetryStatus RetryStatus`

    What the client should do next.

    - `class BetaManagedAgentsRetryStatusRetrying`

      The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

      - `JsonElement Type = "retrying"`

    - `class BetaManagedAgentsRetryStatusExhausted`

      This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

      - `JsonElement Type = "exhausted"`

    - `class BetaManagedAgentsRetryStatusTerminal`

      The session encountered a terminal error and will transition to `terminated` state.

      - `JsonElement Type = "terminal"`

### Beta Managed Agents Plain Text Document Source

- `class BetaManagedAgentsPlainTextDocumentSource`

  Plain text document content.

  - `JsonElement Type = "text"`

  - `required string Data`

    The plain text content.

    minLength: 1

  - `JsonElement MediaType = "text/plain"`

    MIME type of the text content. Must be "text/plain".

### Beta Managed Agents Program Workflow Run Error

- `class BetaManagedAgentsProgramWorkflowRunError`

  The plan, a program that the agent wrote, failed, or the server refused it.

  - `JsonElement Type = "program_error"`

  - `required string Message`

    Short explanation written by the server. It never contains content from the run or its agents.

### Beta Managed Agents Redacted Block

- `class BetaManagedAgentsRedactedBlock`

  Placeholder for content withheld by Anthropic model policy.

  - `JsonElement Type = "redacted"`

### Beta Managed Agents Repository Authentication Error

- `class BetaManagedAgentsRepositoryAuthenticationError`

  The repository host rejected the credentials, or required credentials and received none.

  - `JsonElement Type = "repository_authentication_error"`

  - `required string Message`

    Human-readable error description.

  - `required string? RepositoryUrl`

    URL of the repository that could not be cloned. Null when it could not be identified.

  - `required RetryStatus RetryStatus`

    What the client should do next. Always `retrying`: the session keeps running without the repository.

    - `class BetaManagedAgentsRetryStatusRetrying`

      The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

      - `JsonElement Type = "retrying"`

    - `class BetaManagedAgentsRetryStatusExhausted`

      This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

      - `JsonElement Type = "exhausted"`

    - `class BetaManagedAgentsRetryStatusTerminal`

      The session encountered a terminal error and will transition to `terminated` state.

      - `JsonElement Type = "terminal"`

### Beta Managed Agents Repository Checkout Error

- `class BetaManagedAgentsRepositoryCheckoutError`

  The requested branch or commit does not exist in the repository.

  - `JsonElement Type = "repository_checkout_error"`

  - `required string Message`

    Human-readable error description.

  - `required string? RepositoryUrl`

    URL of the repository that could not be cloned. Null when it could not be identified.

  - `required RetryStatus RetryStatus`

    What the client should do next. Always `retrying`: the session keeps running without the repository.

    - `class BetaManagedAgentsRetryStatusRetrying`

      The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

      - `JsonElement Type = "retrying"`

    - `class BetaManagedAgentsRetryStatusExhausted`

      This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

      - `JsonElement Type = "exhausted"`

    - `class BetaManagedAgentsRetryStatusTerminal`

      The session encountered a terminal error and will transition to `terminated` state.

      - `JsonElement Type = "terminal"`

### Beta Managed Agents Repository Clone Error

- `class BetaManagedAgentsRepositoryCloneError`

  The repository could not be cloned.

  - `JsonElement Type = "repository_clone_error"`

  - `required string Message`

    Human-readable error description.

  - `required string? RepositoryUrl`

    URL of the repository that could not be cloned. Null when it could not be identified.

  - `required RetryStatus RetryStatus`

    What the client should do next. Always `retrying`: the session keeps running without the repository.

    - `class BetaManagedAgentsRetryStatusRetrying`

      The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

      - `JsonElement Type = "retrying"`

    - `class BetaManagedAgentsRetryStatusExhausted`

      This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

      - `JsonElement Type = "exhausted"`

    - `class BetaManagedAgentsRetryStatusTerminal`

      The session encountered a terminal error and will transition to `terminated` state.

      - `JsonElement Type = "terminal"`

### Beta Managed Agents Repository Forbidden Error

- `class BetaManagedAgentsRepositoryForbiddenError`

  The repository host refused access to the repository.

  - `JsonElement Type = "repository_forbidden_error"`

  - `required string Message`

    Human-readable error description.

  - `required string? RepositoryUrl`

    URL of the repository that could not be cloned. Null when it could not be identified.

  - `required RetryStatus RetryStatus`

    What the client should do next. Always `retrying`: the session keeps running without the repository.

    - `class BetaManagedAgentsRetryStatusRetrying`

      The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

      - `JsonElement Type = "retrying"`

    - `class BetaManagedAgentsRetryStatusExhausted`

      This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

      - `JsonElement Type = "exhausted"`

    - `class BetaManagedAgentsRetryStatusTerminal`

      The session encountered a terminal error and will transition to `terminated` state.

      - `JsonElement Type = "terminal"`

### Beta Managed Agents Repository Not Found Error

- `class BetaManagedAgentsRepositoryNotFoundError`

  The repository host reported the repository as not found.

  - `JsonElement Type = "repository_not_found_error"`

  - `required string Message`

    Human-readable error description.

  - `required string? RepositoryUrl`

    URL of the repository that could not be cloned. Null when it could not be identified.

  - `required RetryStatus RetryStatus`

    What the client should do next. Always `retrying`: the session keeps running without the repository.

    - `class BetaManagedAgentsRetryStatusRetrying`

      The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

      - `JsonElement Type = "retrying"`

    - `class BetaManagedAgentsRetryStatusExhausted`

      This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

      - `JsonElement Type = "exhausted"`

    - `class BetaManagedAgentsRetryStatusTerminal`

      The session encountered a terminal error and will transition to `terminated` state.

      - `JsonElement Type = "terminal"`

### Beta Managed Agents Retry Status Exhausted

- `class BetaManagedAgentsRetryStatusExhausted`

  This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

  - `JsonElement Type = "exhausted"`

### Beta Managed Agents Retry Status Retrying

- `class BetaManagedAgentsRetryStatusRetrying`

  The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

  - `JsonElement Type = "retrying"`

### Beta Managed Agents Retry Status Terminal

- `class BetaManagedAgentsRetryStatusTerminal`

  The session encountered a terminal error and will transition to `terminated` state.

  - `JsonElement Type = "terminal"`

### Beta Managed Agents Search Result Block

- `class BetaManagedAgentsSearchResultBlock`

  A block containing a web search result.

  - `JsonElement Type = "search_result"`

  - `required BetaManagedAgentsSearchResultCitations Citations`

    Citation settings for this search result.

    - `required bool Enabled`

      Whether citations are enabled for this search result.

  - `required IReadOnlyList<BetaManagedAgentsSearchResultContent> Content`

    Array of text content blocks from the search result.

    - `JsonElement Type = "text"`

    - `required string Text`

      The text content.

      minLength: 1

  - `required string Source`

    The URL source of the search result.

    minLength: 1

  - `required string Title`

    The title of the search result.

    minLength: 1

### Beta Managed Agents Search Result Citations

- `class BetaManagedAgentsSearchResultCitations`

  Citation settings for a search result.

  - `required bool Enabled`

    Whether citations are enabled for this search result.

### Beta Managed Agents Search Result Content

- `class BetaManagedAgentsSearchResultContent`

  Text content within a search result.

  - `JsonElement Type = "text"`

  - `required string Text`

    The text content.

    minLength: 1

### Beta Managed Agents Send Session Events

- `class BetaManagedAgentsSendSessionEvents`

  Events that were successfully sent to the session.

  - `IReadOnlyList<Data> Data`

    Sent events

    - `class BetaManagedAgentsUserMessageEvent`

      A user message event in the session conversation.

      - `JsonElement Type = "user.message"`

      - `required string ID`

        Unique identifier for this event.

      - `required IReadOnlyList<Content> Content`

        Array of content blocks comprising the user message.

        - `class BetaManagedAgentsTextBlock`

          Regular text content.

          - `JsonElement Type = "text"`

          - `required string Text`

            The text content.

            minLength: 1

        - `class BetaManagedAgentsImageBlock`

          Image content specified directly as base64 data or as a reference via a URL.

          - `JsonElement Type = "image"`

          - `required Source Source`

            The source of the image data.

            - `class BetaManagedAgentsBase64ImageSource`

              Base64-encoded image data.

              - `JsonElement Type = "base64"`

              - `required string Data`

                Base64-encoded image data.

                minLength: 1

              - `required string MediaType`

                MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif", "image/webp").

                minLength: 1

            - `class BetaManagedAgentsUrlImageSource`

              Image referenced by URL.

              - `JsonElement Type = "url"`

              - `required string Url`

                URL of the image to fetch.

                minLength: 1

            - `class BetaManagedAgentsFileImageSource`

              Image referenced by file ID.

              - `JsonElement Type = "file"`

              - `required string FileID`

                ID of a previously uploaded file.

                minLength: 1

        - `class BetaManagedAgentsDocumentBlock`

          Document content, either specified directly as base64 data, as text, or as a reference via a URL.

          - `JsonElement Type = "document"`

          - `required Source Source`

            The source of the document data.

            - `class BetaManagedAgentsBase64DocumentSource`

              Base64-encoded document data.

              - `JsonElement Type = "base64"`

              - `required string Data`

                Base64-encoded document data.

                minLength: 1

              - `required string MediaType`

                MIME type of the document (e.g., "application/pdf").

                minLength: 1

            - `class BetaManagedAgentsPlainTextDocumentSource`

              Plain text document content.

              - `JsonElement Type = "text"`

              - `required string Data`

                The plain text content.

                minLength: 1

              - `JsonElement MediaType = "text/plain"`

                MIME type of the text content. Must be "text/plain".

            - `class BetaManagedAgentsUrlDocumentSource`

              Document referenced by URL.

              - `JsonElement Type = "url"`

              - `required string Url`

                URL of the document to fetch.

                minLength: 1

            - `class BetaManagedAgentsFileDocumentSource`

              Document referenced by file ID.

              - `JsonElement Type = "file"`

              - `required string FileID`

                ID of a previously uploaded file.

                minLength: 1

          - `string? Context`

            Additional context about the document for the model.

          - `string? Title`

            The title of the document.

        - `class BetaManagedAgentsRedactedBlock`

          Placeholder for content withheld by Anthropic model policy.

          - `JsonElement Type = "redacted"`

      - `DateTimeOffset? ProcessedAt`

        Timestamp when the agent finished processing this message.

        format: date-time

    - `class BetaManagedAgentsUserInterruptEvent`

      An interrupt event that pauses agent execution and returns control to the user.

      - `JsonElement Type = "user.interrupt"`

      - `required string ID`

        Unique identifier for this event.

      - `DateTimeOffset? ProcessedAt`

        Timestamp when the interrupt was processed.

        format: date-time

      - `string? SessionThreadID`

        If absent, interrupts every non-archived thread in a multiagent session (or the primary alone in a single-agent session). If present, interrupts only the named thread.

    - `class BetaManagedAgentsUserToolConfirmationEvent`

      A tool confirmation event that approves or denies a pending tool execution.

      - `JsonElement Type = "user.tool_confirmation"`

      - `required string ID`

        Unique identifier for this event.

      - `required Result Result`

        The confirmation result: 'allow' or 'deny'.

        - `Allow("allow")`

        - `Deny("deny")`

      - `required string ToolUseID`

        The id of the `agent.tool_use` or `agent.mcp_tool_use` event this result corresponds to, which can be found in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

      - `string? DenyMessage`

        Optional message providing context for a 'deny' decision. Only allowed when result is 'deny'.

        maxLength: 10000

      - `DateTimeOffset? ProcessedAt`

        Timestamp when the confirmation was processed.

        format: date-time

      - `string? SessionThreadID`

        Set by the server to the subagent thread this confirmation was routed to. Omitted when it was routed to the primary thread.

    - `class BetaManagedAgentsUserCustomToolResultEvent`

      Event sent by the client providing the result of a custom tool execution.

      - `JsonElement Type = "user.custom_tool_result"`

      - `required string ID`

        Unique identifier for this event.

      - `required string CustomToolUseID`

        The id of the `agent.custom_tool_use` event this result corresponds to. It is also listed in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

      - `IReadOnlyList<Content> Content`

        The result content returned by the tool.

        - `class BetaManagedAgentsTextBlock`

          Regular text content.

        - `class BetaManagedAgentsImageBlock`

          Image content specified directly as base64 data or as a reference via a URL.

        - `class BetaManagedAgentsDocumentBlock`

          Document content, either specified directly as base64 data, as text, or as a reference via a URL.

        - `class BetaManagedAgentsSearchResultBlock`

          A block containing a web search result.

          - `JsonElement Type = "search_result"`

          - `required BetaManagedAgentsSearchResultCitations Citations`

            Citation settings for this search result.

            - `required bool Enabled`

              Whether citations are enabled for this search result.

          - `required IReadOnlyList<BetaManagedAgentsSearchResultContent> Content`

            Array of text content blocks from the search result.

            - `JsonElement Type = "text"`

            - `required string Text`

              The text content.

              minLength: 1

          - `required string Source`

            The URL source of the search result.

            minLength: 1

          - `required string Title`

            The title of the search result.

            minLength: 1

      - `bool? IsError`

        Whether the tool execution resulted in an error.

      - `DateTimeOffset? ProcessedAt`

        Timestamp when this result was processed.

        format: date-time

      - `string? SessionThreadID`

        Set by the server to the subagent thread this result was routed to. Omitted when it was routed to the primary thread.

    - `class BetaManagedAgentsUserDefineOutcomeEvent`

      Echo of a `user.define_outcome` input event. Carries the server-generated `outcome_id` that subsequent `span.outcome_evaluation_*` events reference.

      - `JsonElement Type = "user.define_outcome"`

      - `required string ID`

        Unique identifier for this event.

      - `required string Description`

        What the agent should produce. Copied from the input event.

      - `required int? MaxIterations`

        Evaluate-then-revise cycles before giving up. Default 3, max 20.

        format: int32

      - `required string OutcomeID`

        Server-generated `outc_` ID for this outcome. Referenced by `span.outcome_evaluation_*` events and the session's `outcome_evaluations` list.

      - `required DateTimeOffset ProcessedAt`

        Timestamp when the outcome was accepted.

        format: date-time

      - `required Rubric Rubric`

        How to grade the outcome. File rubrics are currently resolved to their text content; clients should handle both variants.

        - `class BetaManagedAgentsFileRubric`

          Rubric referenced by a file uploaded via the Files API.

          - `JsonElement Type = "file"`

          - `required string FileID`

            ID of the rubric file.

        - `class BetaManagedAgentsTextRubric`

          Rubric content provided inline as text.

          - `JsonElement Type = "text"`

          - `required string Content`

            Rubric content. Plain text or markdown — the grader treats it as freeform text.

    - `class BetaManagedAgentsUserToolResultEvent`

      Event sent by the client providing the result of an agent-toolset tool execution. Only valid on `self_hosted` environments, where sandbox-routed tools are executed by the client rather than the server.

      - `JsonElement Type = "user.tool_result"`

      - `required string ID`

        Unique identifier for this event.

      - `required string ToolUseID`

        The id of the `agent.tool_use` event this result corresponds to, which can be found in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

      - `IReadOnlyList<Content> Content`

        The result content returned by the tool.

        - `class BetaManagedAgentsTextBlock`

          Regular text content.

        - `class BetaManagedAgentsImageBlock`

          Image content specified directly as base64 data or as a reference via a URL.

        - `class BetaManagedAgentsDocumentBlock`

          Document content, either specified directly as base64 data, as text, or as a reference via a URL.

        - `class BetaManagedAgentsSearchResultBlock`

          A block containing a web search result.

      - `bool? IsError`

        Whether the tool execution resulted in an error.

      - `DateTimeOffset? ProcessedAt`

        Timestamp when this result was processed.

        format: date-time

      - `string? SessionThreadID`

        Set by the server to the subagent thread this result was routed to. Omitted when it was routed to the primary thread.

    - `class BetaManagedAgentsSystemMessageEvent`

      A mid-conversation system message event. Carries system-role content that is appended to the session as a `role: "system"` turn.

      - `JsonElement Type = "system.message"`

      - `required string ID`

        Unique identifier for this event.

      - `required IReadOnlyList<BetaManagedAgentsSystemContentBlock> Content`

        System content blocks. Text-only.

        - `JsonElement Type = "text"`

        - `required string Text`

          The text content.

          minLength: 1

      - `DateTimeOffset? ProcessedAt`

        Timestamp when this system message was processed.

        format: date-time

### Beta Managed Agents Session Budget Reached

- `class BetaManagedAgentsSessionBudgetReached`

  The agent stopped because the session's tracked list cost reached its budget, or because its usage includes a model with no list price (which the budget cannot measure). Raise the budget to continue — or, if raising is rejected because a model has no list price, remove the budget.

  - `JsonElement Type = "budget_reached"`

### Beta Managed Agents Session Deleted Event

- `class BetaManagedAgentsSessionDeletedEvent`

  Emitted when a session has been deleted. Terminates any active event stream — no further events will be emitted for this session.

  - `JsonElement Type = "session.deleted"`

  - `required string ID`

    Unique identifier for this event.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when the session was deleted.

    format: date-time

### Beta Managed Agents Session End Turn

- `class BetaManagedAgentsSessionEndTurn`

  The agent completed its turn naturally and is ready for the next user message.

  - `JsonElement Type = "end_turn"`

### Beta Managed Agents Session Error Event

- `class BetaManagedAgentsSessionErrorEvent`

  An error event indicating a problem occurred during session execution.

  - `JsonElement Type = "session.error"`

  - `required string ID`

    Unique identifier for this event.

  - `required Error Error`

    - `class BetaManagedAgentsUnknownError`

      An unknown or unexpected error occurred during session execution. A fallback variant; clients that don't recognize a new error code can match on `retry_status` and `message` alone.

      - `JsonElement Type = "unknown_error"`

      - `required string Message`

        Human-readable error description.

      - `required RetryStatus RetryStatus`

        What the client should do next.

        - `class BetaManagedAgentsRetryStatusRetrying`

          The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `JsonElement Type = "retrying"`

        - `class BetaManagedAgentsRetryStatusExhausted`

          This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `JsonElement Type = "exhausted"`

        - `class BetaManagedAgentsRetryStatusTerminal`

          The session encountered a terminal error and will transition to `terminated` state.

          - `JsonElement Type = "terminal"`

    - `class BetaManagedAgentsModelOverloadedError`

      The model is currently overloaded. Emitted after automatic retries are exhausted.

      - `JsonElement Type = "model_overloaded_error"`

      - `required string Message`

        Human-readable error description.

      - `required RetryStatus RetryStatus`

        What the client should do next.

        - `class BetaManagedAgentsRetryStatusRetrying`

          The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

        - `class BetaManagedAgentsRetryStatusExhausted`

          This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

        - `class BetaManagedAgentsRetryStatusTerminal`

          The session encountered a terminal error and will transition to `terminated` state.

    - `class BetaManagedAgentsModelRateLimitedError`

      The model request was rate-limited.

      - `JsonElement Type = "model_rate_limited_error"`

      - `required string Message`

        Human-readable error description.

      - `required RetryStatus RetryStatus`

        What the client should do next.

        - `class BetaManagedAgentsRetryStatusRetrying`

          The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

        - `class BetaManagedAgentsRetryStatusExhausted`

          This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

        - `class BetaManagedAgentsRetryStatusTerminal`

          The session encountered a terminal error and will transition to `terminated` state.

    - `class BetaManagedAgentsModelRequestFailedError`

      A model request failed for a reason other than overload or rate-limiting.

      - `JsonElement Type = "model_request_failed_error"`

      - `required string Message`

        Human-readable error description.

      - `required RetryStatus RetryStatus`

        What the client should do next.

        - `class BetaManagedAgentsRetryStatusRetrying`

          The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

        - `class BetaManagedAgentsRetryStatusExhausted`

          This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

        - `class BetaManagedAgentsRetryStatusTerminal`

          The session encountered a terminal error and will transition to `terminated` state.

    - `class BetaManagedAgentsMcpConnectionFailedError`

      Failed to connect to an MCP server.

      - `JsonElement Type = "mcp_connection_failed_error"`

      - `required string McpServerName`

        Name of the MCP server that failed to connect.

      - `required string Message`

        Human-readable error description.

      - `required RetryStatus RetryStatus`

        What the client should do next.

        - `class BetaManagedAgentsRetryStatusRetrying`

          The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

        - `class BetaManagedAgentsRetryStatusExhausted`

          This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

        - `class BetaManagedAgentsRetryStatusTerminal`

          The session encountered a terminal error and will transition to `terminated` state.

    - `class BetaManagedAgentsMcpAuthenticationFailedError`

      Authentication to an MCP server failed.

      - `JsonElement Type = "mcp_authentication_failed_error"`

      - `required string McpServerName`

        Name of the MCP server that failed authentication.

      - `required string Message`

        Human-readable error description.

      - `required RetryStatus RetryStatus`

        What the client should do next.

        - `class BetaManagedAgentsRetryStatusRetrying`

          The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

        - `class BetaManagedAgentsRetryStatusExhausted`

          This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

        - `class BetaManagedAgentsRetryStatusTerminal`

          The session encountered a terminal error and will transition to `terminated` state.

    - `class BetaManagedAgentsBillingError`

      The caller's organization or workspace cannot make model requests — out of credits or spend limit reached. Retrying with the same credentials will not succeed; the caller must resolve the billing state.

      - `JsonElement Type = "billing_error"`

      - `required string Message`

        Human-readable error description.

      - `required RetryStatus RetryStatus`

        What the client should do next.

        - `class BetaManagedAgentsRetryStatusRetrying`

          The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

        - `class BetaManagedAgentsRetryStatusExhausted`

          This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

        - `class BetaManagedAgentsRetryStatusTerminal`

          The session encountered a terminal error and will transition to `terminated` state.

    - `class BetaManagedAgentsCredentialHostUnreachableError`

      An `environment_variable` credential's `auth.networking.allowed_hosts` includes a host the environment's network policy does not permit.

      - `JsonElement Type = "credential_host_unreachable_error"`

      - `required string CredentialID`

        ID of the affected credential.

      - `required string Message`

        Human-readable error description.

      - `required RetryStatus RetryStatus`

        What the client should do next.

        - `class BetaManagedAgentsRetryStatusRetrying`

          The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

        - `class BetaManagedAgentsRetryStatusExhausted`

          This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

        - `class BetaManagedAgentsRetryStatusTerminal`

          The session encountered a terminal error and will transition to `terminated` state.

      - `required string VaultID`

        ID of the vault containing the affected credential.

    - `class BetaManagedAgentsToolUseLimitReachedError`

      The turn stopped because the agent loop reached its limit on tool-use rounds (one model response that calls tools, plus running those tools, is one round), not because a request failed. The thread goes idle with `stop_reason: retries_exhausted` (a child thread then terminates); the next `user.message` starts a new turn.

      - `JsonElement Type = "tool_use_limit_reached_error"`

      - `required string Message`

        Human-readable error description.

      - `required RetryStatus RetryStatus`

        What the client should do next.

        - `class BetaManagedAgentsRetryStatusRetrying`

          The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

        - `class BetaManagedAgentsRetryStatusExhausted`

          This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

        - `class BetaManagedAgentsRetryStatusTerminal`

          The session encountered a terminal error and will transition to `terminated` state.

    - `class BetaManagedAgentsCompactionLimitReachedError`

      The turn stopped because the context was compacted the maximum number of times in a row without the model producing a message or a tool call, not because a request failed. The thread goes idle with `stop_reason: retries_exhausted` (a child thread then terminates); the next `user.message` starts a new turn.

      - `JsonElement Type = "compaction_limit_reached_error"`

      - `required string Message`

        Human-readable error description.

      - `required RetryStatus RetryStatus`

        What the client should do next.

        - `class BetaManagedAgentsRetryStatusRetrying`

          The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

        - `class BetaManagedAgentsRetryStatusExhausted`

          This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

        - `class BetaManagedAgentsRetryStatusTerminal`

          The session encountered a terminal error and will transition to `terminated` state.

    - `class BetaManagedAgentsRepositoryAuthenticationError`

      The repository host rejected the credentials, or required credentials and received none.

      - `JsonElement Type = "repository_authentication_error"`

      - `required string Message`

        Human-readable error description.

      - `required string? RepositoryUrl`

        URL of the repository that could not be cloned. Null when it could not be identified.

      - `required RetryStatus RetryStatus`

        What the client should do next. Always `retrying`: the session keeps running without the repository.

        - `class BetaManagedAgentsRetryStatusRetrying`

          The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

        - `class BetaManagedAgentsRetryStatusExhausted`

          This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

        - `class BetaManagedAgentsRetryStatusTerminal`

          The session encountered a terminal error and will transition to `terminated` state.

    - `class BetaManagedAgentsRepositoryForbiddenError`

      The repository host refused access to the repository.

      - `JsonElement Type = "repository_forbidden_error"`

      - `required string Message`

        Human-readable error description.

      - `required string? RepositoryUrl`

        URL of the repository that could not be cloned. Null when it could not be identified.

      - `required RetryStatus RetryStatus`

        What the client should do next. Always `retrying`: the session keeps running without the repository.

        - `class BetaManagedAgentsRetryStatusRetrying`

          The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

        - `class BetaManagedAgentsRetryStatusExhausted`

          This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

        - `class BetaManagedAgentsRetryStatusTerminal`

          The session encountered a terminal error and will transition to `terminated` state.

    - `class BetaManagedAgentsRepositoryNotFoundError`

      The repository host reported the repository as not found.

      - `JsonElement Type = "repository_not_found_error"`

      - `required string Message`

        Human-readable error description.

      - `required string? RepositoryUrl`

        URL of the repository that could not be cloned. Null when it could not be identified.

      - `required RetryStatus RetryStatus`

        What the client should do next. Always `retrying`: the session keeps running without the repository.

        - `class BetaManagedAgentsRetryStatusRetrying`

          The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

        - `class BetaManagedAgentsRetryStatusExhausted`

          This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

        - `class BetaManagedAgentsRetryStatusTerminal`

          The session encountered a terminal error and will transition to `terminated` state.

    - `class BetaManagedAgentsRepositoryCheckoutError`

      The requested branch or commit does not exist in the repository.

      - `JsonElement Type = "repository_checkout_error"`

      - `required string Message`

        Human-readable error description.

      - `required string? RepositoryUrl`

        URL of the repository that could not be cloned. Null when it could not be identified.

      - `required RetryStatus RetryStatus`

        What the client should do next. Always `retrying`: the session keeps running without the repository.

        - `class BetaManagedAgentsRetryStatusRetrying`

          The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

        - `class BetaManagedAgentsRetryStatusExhausted`

          This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

        - `class BetaManagedAgentsRetryStatusTerminal`

          The session encountered a terminal error and will transition to `terminated` state.

    - `class BetaManagedAgentsRepositoryCloneError`

      The repository could not be cloned.

      - `JsonElement Type = "repository_clone_error"`

      - `required string Message`

        Human-readable error description.

      - `required string? RepositoryUrl`

        URL of the repository that could not be cloned. Null when it could not be identified.

      - `required RetryStatus RetryStatus`

        What the client should do next. Always `retrying`: the session keeps running without the repository.

        - `class BetaManagedAgentsRetryStatusRetrying`

          The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

        - `class BetaManagedAgentsRetryStatusExhausted`

          This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

        - `class BetaManagedAgentsRetryStatusTerminal`

          The session encountered a terminal error and will transition to `terminated` state.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when the error occurred.

    format: date-time

### Beta Managed Agents Session Event

- `class BetaManagedAgentsSessionEvent: union`

  Union type for all event types in a session.

  - `class BetaManagedAgentsUserMessageEvent`

    A user message event in the session conversation.

    - `JsonElement Type = "user.message"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyList<Content> Content`

      Array of content blocks comprising the user message.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

        - `JsonElement Type = "text"`

        - `required string Text`

          The text content.

          minLength: 1

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

        - `JsonElement Type = "image"`

        - `required Source Source`

          The source of the image data.

          - `class BetaManagedAgentsBase64ImageSource`

            Base64-encoded image data.

            - `JsonElement Type = "base64"`

            - `required string Data`

              Base64-encoded image data.

              minLength: 1

            - `required string MediaType`

              MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif", "image/webp").

              minLength: 1

          - `class BetaManagedAgentsUrlImageSource`

            Image referenced by URL.

            - `JsonElement Type = "url"`

            - `required string Url`

              URL of the image to fetch.

              minLength: 1

          - `class BetaManagedAgentsFileImageSource`

            Image referenced by file ID.

            - `JsonElement Type = "file"`

            - `required string FileID`

              ID of a previously uploaded file.

              minLength: 1

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

        - `JsonElement Type = "document"`

        - `required Source Source`

          The source of the document data.

          - `class BetaManagedAgentsBase64DocumentSource`

            Base64-encoded document data.

            - `JsonElement Type = "base64"`

            - `required string Data`

              Base64-encoded document data.

              minLength: 1

            - `required string MediaType`

              MIME type of the document (e.g., "application/pdf").

              minLength: 1

          - `class BetaManagedAgentsPlainTextDocumentSource`

            Plain text document content.

            - `JsonElement Type = "text"`

            - `required string Data`

              The plain text content.

              minLength: 1

            - `JsonElement MediaType = "text/plain"`

              MIME type of the text content. Must be "text/plain".

          - `class BetaManagedAgentsUrlDocumentSource`

            Document referenced by URL.

            - `JsonElement Type = "url"`

            - `required string Url`

              URL of the document to fetch.

              minLength: 1

          - `class BetaManagedAgentsFileDocumentSource`

            Document referenced by file ID.

            - `JsonElement Type = "file"`

            - `required string FileID`

              ID of a previously uploaded file.

              minLength: 1

        - `string? Context`

          Additional context about the document for the model.

        - `string? Title`

          The title of the document.

      - `class BetaManagedAgentsRedactedBlock`

        Placeholder for content withheld by Anthropic model policy.

        - `JsonElement Type = "redacted"`

    - `DateTimeOffset? ProcessedAt`

      Timestamp when the agent finished processing this message.

      format: date-time

  - `class BetaManagedAgentsUserInterruptEvent`

    An interrupt event that pauses agent execution and returns control to the user.

    - `JsonElement Type = "user.interrupt"`

    - `required string ID`

      Unique identifier for this event.

    - `DateTimeOffset? ProcessedAt`

      Timestamp when the interrupt was processed.

      format: date-time

    - `string? SessionThreadID`

      If absent, interrupts every non-archived thread in a multiagent session (or the primary alone in a single-agent session). If present, interrupts only the named thread.

  - `class BetaManagedAgentsUserToolConfirmationEvent`

    A tool confirmation event that approves or denies a pending tool execution.

    - `JsonElement Type = "user.tool_confirmation"`

    - `required string ID`

      Unique identifier for this event.

    - `required Result Result`

      The confirmation result: 'allow' or 'deny'.

      - `Allow("allow")`

      - `Deny("deny")`

    - `required string ToolUseID`

      The id of the `agent.tool_use` or `agent.mcp_tool_use` event this result corresponds to, which can be found in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

    - `string? DenyMessage`

      Optional message providing context for a 'deny' decision. Only allowed when result is 'deny'.

      maxLength: 10000

    - `DateTimeOffset? ProcessedAt`

      Timestamp when the confirmation was processed.

      format: date-time

    - `string? SessionThreadID`

      Set by the server to the subagent thread this confirmation was routed to. Omitted when it was routed to the primary thread.

  - `class BetaManagedAgentsUserCustomToolResultEvent`

    Event sent by the client providing the result of a custom tool execution.

    - `JsonElement Type = "user.custom_tool_result"`

    - `required string ID`

      Unique identifier for this event.

    - `required string CustomToolUseID`

      The id of the `agent.custom_tool_use` event this result corresponds to. It is also listed in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

    - `IReadOnlyList<Content> Content`

      The result content returned by the tool.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsSearchResultBlock`

        A block containing a web search result.

        - `JsonElement Type = "search_result"`

        - `required BetaManagedAgentsSearchResultCitations Citations`

          Citation settings for this search result.

          - `required bool Enabled`

            Whether citations are enabled for this search result.

        - `required IReadOnlyList<BetaManagedAgentsSearchResultContent> Content`

          Array of text content blocks from the search result.

          - `JsonElement Type = "text"`

          - `required string Text`

            The text content.

            minLength: 1

        - `required string Source`

          The URL source of the search result.

          minLength: 1

        - `required string Title`

          The title of the search result.

          minLength: 1

    - `bool? IsError`

      Whether the tool execution resulted in an error.

    - `DateTimeOffset? ProcessedAt`

      Timestamp when this result was processed.

      format: date-time

    - `string? SessionThreadID`

      Set by the server to the subagent thread this result was routed to. Omitted when it was routed to the primary thread.

  - `class BetaManagedAgentsAgentCustomToolUseEvent`

    Event emitted when the agent calls a custom tool. The session goes idle until the client sends a `user.custom_tool_result` event with the result. The client can send it as soon as this event arrives, without waiting for `session.status_idle`.

    - `JsonElement Type = "agent.custom_tool_use"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyDictionary<string, JsonElement> Input`

      Input parameters for the tool call.

    - `required string Name`

      Name of the custom tool being called.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this tool use was processed.

      format: date-time

    - `string? SessionThreadID`

      When set, this event was cross-posted from a subagent's thread to surface its custom tool use on the primary thread's stream. Empty on the thread's own events. Informational only: the server routes the matching `user.custom_tool_result` by `custom_tool_use_id`, so clients do not send it back.

  - `class BetaManagedAgentsAgentMessageEvent`

    An agent response event in the session conversation.

    - `JsonElement Type = "agent.message"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyList<Content> Content`

      Array of text blocks comprising the agent response.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsRedactedBlock`

        Placeholder for content withheld by Anthropic model policy.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this response was generated.

      format: date-time

  - `class BetaManagedAgentsAgentThinkingEvent`

    Indicates the agent is making forward progress via extended thinking. A progress signal, not a content carrier.

    - `JsonElement Type = "agent.thinking"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this thinking was produced.

      format: date-time

  - `class BetaManagedAgentsAgentMcpToolUseEvent`

    Event emitted when the agent invokes a tool provided by an MCP server.

    - `JsonElement Type = "agent.mcp_tool_use"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyDictionary<string, JsonElement> Input`

      Input parameters for the tool call.

    - `required string McpServerName`

      Name of the MCP server providing the tool.

    - `required string Name`

      Name of the MCP tool being used.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `BetaManagedAgentsAgentEvaluatedPermission EvaluatedPermission`

      The evaluated permission policy for this tool invocation.

      - `Allow("allow")`

      - `Ask("ask")`

      - `Deny("deny")`

    - `BetaManagedAgentsAgentToolEvaluation Evaluation`

      Which resolved permission_policy produced evaluated_permission: always_allow, always_ask, or auto (with the server's per-invocation judgement). Absent only when the server refused the call before any policy applied (for example, the named tool is not enabled in the session); such a refusal has evaluated_permission deny. An event recorded before this field existed reads as the arm its evaluated_permission implies (always_allow for allow, always_ask for ask).

      - `class BetaManagedAgentsAgentToolEvaluationAlwaysAllow`

        The resolved permission_policy was always_allow; accompanies evaluated_permission "allow".

        - `JsonElement Type = "always_allow"`

      - `class BetaManagedAgentsAgentToolEvaluationAlwaysAsk`

        The resolved permission_policy was always_ask; accompanies evaluated_permission "ask".

        - `JsonElement Type = "always_ask"`

      - `class BetaManagedAgentsAgentToolEvaluationAuto`

        The resolved permission_policy was auto: the server judged this invocation individually.

        - `JsonElement Type = "auto"`

        - `required BetaManagedAgentsAgentAutoEvaluatedPermission EvaluatedPermission`

          The server's judgement for this invocation.

          - `class BetaManagedAgentsAgentAutoEvaluatedPermissionAllow`

            The server judged the invocation safe to execute without client approval.

            - `JsonElement Type = "allow"`

          - `class BetaManagedAgentsAgentAutoEvaluatedPermissionAsk`

            The server reached no judgement; the invocation is held for client approval.

            - `JsonElement Type = "ask"`

            - `required string ReasonCode`

              The judgement's grounds in registry-bound terms, for client branching and audit rather than end-user display. Open registry; currently "indeterminate" (no judgement was reached). Clients must tolerate values outside this set.

              maxLength: 64

          - `class BetaManagedAgentsAgentAutoEvaluatedPermissionDeny`

            The server judged the invocation high-risk; it does not execute and a synthetic error tool result is appended.

            - `JsonElement Type = "deny"`

            - `required string ReasonCode`

              The judgement's grounds in registry-bound terms. Open registry; currently "high_risk" (judged high-risk; the call does not run). Clients must tolerate values outside this set.

              maxLength: 64

    - `string? SessionThreadID`

      When set, this event was cross-posted from a subagent's thread to surface its permission request on the primary thread's stream. Empty on the thread's own events. Informational only: the server routes the matching `user.tool_confirmation` by `tool_use_id`, so clients do not send it back.

  - `class BetaManagedAgentsAgentMcpToolResultEvent`

    Event representing the result of an MCP tool execution.

    - `JsonElement Type = "agent.mcp_tool_result"`

    - `required string ID`

      Unique identifier for this event.

    - `required string McpToolUseID`

      The id of the `agent.mcp_tool_use` event this result corresponds to.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `IReadOnlyList<Content> Content`

      The result content returned by the tool.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsSearchResultBlock`

        A block containing a web search result.

    - `bool? IsError`

      Whether the tool execution resulted in an error.

  - `class BetaManagedAgentsAgentToolUseEvent`

    Event emitted when the agent invokes a built-in agent tool.

    - `JsonElement Type = "agent.tool_use"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyDictionary<string, JsonElement> Input`

      Input parameters for the tool call.

    - `required string Name`

      Name of the agent tool being used.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `BetaManagedAgentsAgentEvaluatedPermission EvaluatedPermission`

      The evaluated permission policy for this tool invocation.

    - `BetaManagedAgentsAgentToolEvaluation Evaluation`

      Which resolved permission_policy produced evaluated_permission: always_allow, always_ask, or auto (with the server's per-invocation judgement). Absent only when the server refused the call before any policy applied (for example, the named tool is not enabled in the session); such a refusal has evaluated_permission deny. An event recorded before this field existed reads as the arm its evaluated_permission implies (always_allow for allow, always_ask for ask).

    - `string? SessionThreadID`

      When set, this event was cross-posted from a subagent's thread to surface its permission request on the primary thread's stream. Empty on the thread's own events. Informational only: the server routes the matching `user.tool_confirmation` or `user.tool_result` by `tool_use_id`, so clients do not send it back.

  - `class BetaManagedAgentsAgentToolResultEvent`

    Event representing the result of an agent tool execution.

    - `JsonElement Type = "agent.tool_result"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string ToolUseID`

      The id of the `agent.tool_use` event this result corresponds to.

    - `IReadOnlyList<Content> Content`

      The result content returned by the tool.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsSearchResultBlock`

        A block containing a web search result.

    - `bool? IsError`

      Whether the tool execution resulted in an error.

  - `class BetaManagedAgentsAgentThreadMessageReceivedEvent`

    Delivery event written to the target thread's input stream when an agent-to-agent message arrives.

    - `JsonElement Type = "agent.thread_message_received"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyList<Content> Content`

      Message content blocks.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsRedactedBlock`

        Placeholder for content withheld by Anthropic model policy.

    - `required string FromSessionThreadID`

      Public `sthr_` ID of the thread that sent the message.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the message was received.

      format: date-time

    - `string? FromAgentName`

      Name of the callable agent this message came from. Absent when received from the primary agent.

  - `class BetaManagedAgentsAgentThreadMessageSentEvent`

    Observability event emitted to the sender's output stream when an agent-to-agent message is sent.

    - `JsonElement Type = "agent.thread_message_sent"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyList<Content> Content`

      Message content blocks.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsRedactedBlock`

        Placeholder for content withheld by Anthropic model policy.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the message was sent.

      format: date-time

    - `required string ToSessionThreadID`

      Public `sthr_` ID of the thread the message was sent to.

    - `string? ToAgentName`

      Name of the callable agent this message was sent to. Absent when sent to the primary agent.

  - `class BetaManagedAgentsAgentThreadContextCompactedEvent`

    Indicates that context compaction (summarization) occurred during the session.

    - `JsonElement Type = "agent.thread_context_compacted"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when compaction was processed.

      format: date-time

  - `class BetaManagedAgentsSessionErrorEvent`

    An error event indicating a problem occurred during session execution.

    - `JsonElement Type = "session.error"`

    - `required string ID`

      Unique identifier for this event.

    - `required Error Error`

      - `class BetaManagedAgentsUnknownError`

        An unknown or unexpected error occurred during session execution. A fallback variant; clients that don't recognize a new error code can match on `retry_status` and `message` alone.

        - `JsonElement Type = "unknown_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

            - `JsonElement Type = "retrying"`

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

            - `JsonElement Type = "exhausted"`

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

            - `JsonElement Type = "terminal"`

      - `class BetaManagedAgentsModelOverloadedError`

        The model is currently overloaded. Emitted after automatic retries are exhausted.

        - `JsonElement Type = "model_overloaded_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsModelRateLimitedError`

        The model request was rate-limited.

        - `JsonElement Type = "model_rate_limited_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsModelRequestFailedError`

        A model request failed for a reason other than overload or rate-limiting.

        - `JsonElement Type = "model_request_failed_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsMcpConnectionFailedError`

        Failed to connect to an MCP server.

        - `JsonElement Type = "mcp_connection_failed_error"`

        - `required string McpServerName`

          Name of the MCP server that failed to connect.

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsMcpAuthenticationFailedError`

        Authentication to an MCP server failed.

        - `JsonElement Type = "mcp_authentication_failed_error"`

        - `required string McpServerName`

          Name of the MCP server that failed authentication.

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsBillingError`

        The caller's organization or workspace cannot make model requests — out of credits or spend limit reached. Retrying with the same credentials will not succeed; the caller must resolve the billing state.

        - `JsonElement Type = "billing_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsCredentialHostUnreachableError`

        An `environment_variable` credential's `auth.networking.allowed_hosts` includes a host the environment's network policy does not permit.

        - `JsonElement Type = "credential_host_unreachable_error"`

        - `required string CredentialID`

          ID of the affected credential.

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

        - `required string VaultID`

          ID of the vault containing the affected credential.

      - `class BetaManagedAgentsToolUseLimitReachedError`

        The turn stopped because the agent loop reached its limit on tool-use rounds (one model response that calls tools, plus running those tools, is one round), not because a request failed. The thread goes idle with `stop_reason: retries_exhausted` (a child thread then terminates); the next `user.message` starts a new turn.

        - `JsonElement Type = "tool_use_limit_reached_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsCompactionLimitReachedError`

        The turn stopped because the context was compacted the maximum number of times in a row without the model producing a message or a tool call, not because a request failed. The thread goes idle with `stop_reason: retries_exhausted` (a child thread then terminates); the next `user.message` starts a new turn.

        - `JsonElement Type = "compaction_limit_reached_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsRepositoryAuthenticationError`

        The repository host rejected the credentials, or required credentials and received none.

        - `JsonElement Type = "repository_authentication_error"`

        - `required string Message`

          Human-readable error description.

        - `required string? RepositoryUrl`

          URL of the repository that could not be cloned. Null when it could not be identified.

        - `required RetryStatus RetryStatus`

          What the client should do next. Always `retrying`: the session keeps running without the repository.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsRepositoryForbiddenError`

        The repository host refused access to the repository.

        - `JsonElement Type = "repository_forbidden_error"`

        - `required string Message`

          Human-readable error description.

        - `required string? RepositoryUrl`

          URL of the repository that could not be cloned. Null when it could not be identified.

        - `required RetryStatus RetryStatus`

          What the client should do next. Always `retrying`: the session keeps running without the repository.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsRepositoryNotFoundError`

        The repository host reported the repository as not found.

        - `JsonElement Type = "repository_not_found_error"`

        - `required string Message`

          Human-readable error description.

        - `required string? RepositoryUrl`

          URL of the repository that could not be cloned. Null when it could not be identified.

        - `required RetryStatus RetryStatus`

          What the client should do next. Always `retrying`: the session keeps running without the repository.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsRepositoryCheckoutError`

        The requested branch or commit does not exist in the repository.

        - `JsonElement Type = "repository_checkout_error"`

        - `required string Message`

          Human-readable error description.

        - `required string? RepositoryUrl`

          URL of the repository that could not be cloned. Null when it could not be identified.

        - `required RetryStatus RetryStatus`

          What the client should do next. Always `retrying`: the session keeps running without the repository.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsRepositoryCloneError`

        The repository could not be cloned.

        - `JsonElement Type = "repository_clone_error"`

        - `required string Message`

          Human-readable error description.

        - `required string? RepositoryUrl`

          URL of the repository that could not be cloned. Null when it could not be identified.

        - `required RetryStatus RetryStatus`

          What the client should do next. Always `retrying`: the session keeps running without the repository.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the error occurred.

      format: date-time

  - `class BetaManagedAgentsSessionStatusRescheduledEvent`

    Indicates the session is recovering from an error state and is rescheduled for execution.

    - `JsonElement Type = "session.status_rescheduled"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of status change.

      format: date-time

  - `class BetaManagedAgentsSessionStatusRunningEvent`

    Indicates the session is actively running and the agent is working.

    - `JsonElement Type = "session.status_running"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of status change.

      format: date-time

  - `class BetaManagedAgentsSessionStatusIdleEvent`

    Indicates the agent has paused and is awaiting user input.

    - `JsonElement Type = "session.status_idle"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of status change.

      format: date-time

    - `required BetaManagedAgentsSessionRefusalStopDetails? StopDetails`

      Structured information about why the session stopped. `null` when there is nothing more to report.

      - `JsonElement Type = "refusal"`

      - `required Category? Category`

        The policy category that triggered the refusal, or `null` when there is no named category. New values can be added over time.

        - `Cyber("cyber")`

        - `Bio("bio")`

        - `FrontierLlm("frontier_llm")`

        - `ReasoningExtraction("reasoning_extraction")`

        - `GeneralHarms("general_harms")`

      - `required string? Explanation`

        Human-readable explanation of the refusal, or `null` when none is available. The wording can change, so do not parse it.

    - `required StopReason StopReason`

      - `class BetaManagedAgentsSessionEndTurn`

        The agent completed its turn naturally and is ready for the next user message.

        - `JsonElement Type = "end_turn"`

      - `class BetaManagedAgentsSessionRequiresAction`

        The agent is idle waiting on one or more blocking user-input events (tool confirmation, custom tool result, etc.). Resolving all of them transitions the session back to running.

        - `JsonElement Type = "requires_action"`

        - `required IReadOnlyList<string> EventIds`

          The ids of events the agent is blocked on. Resolving fewer than all re-emits `session.status_idle` with the remainder.

      - `class BetaManagedAgentsSessionRetriesExhausted`

        The turn ended because repeated errors exhausted the retry budget or an error escalated to `retry_status: 'exhausted'`.

        - `JsonElement Type = "retries_exhausted"`

      - `class BetaManagedAgentsSessionBudgetReached`

        The agent stopped because the session's tracked list cost reached its budget, or because its usage includes a model with no list price (which the budget cannot measure). Raise the budget to continue — or, if raising is rejected because a model has no list price, remove the budget.

        - `JsonElement Type = "budget_reached"`

      - `class BetaManagedAgentsSessionRefusal`

        The turn ended because the model's response was refused, for example by a safety classifier.

        - `JsonElement Type = "refusal"`

  - `class BetaManagedAgentsSessionStatusTerminatedEvent`

    Indicates the session has terminated, either due to an error or completion.

    - `JsonElement Type = "session.status_terminated"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of status change.

      format: date-time

  - `class BetaManagedAgentsSessionThreadCreatedEvent`

    Emitted when a child thread is created. Written to the parent thread's output stream so clients observing the session see child creation.

    - `JsonElement Type = "session.thread_created"`

    - `required string ID`

      Unique identifier for this event.

    - `required string AgentName`

      Name of the callable agent the thread runs.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the thread was created.

      format: date-time

    - `required string SessionThreadID`

      Public `sthr_` ID of the newly created thread.

    - `required string? WorkflowRunID`

      Identifier of the workflow run that created the thread, or `null` for any other thread.

  - `class BetaManagedAgentsSpanOutcomeEvaluationStartEvent`

    Emitted when an outcome evaluation cycle begins.

    - `JsonElement Type = "span.outcome_evaluation_start"`

    - `required string ID`

      Unique identifier for this event.

    - `required int Iteration`

      0-indexed revision cycle. 0 is the first evaluation; 1 is the re-evaluation after the first revision; etc.

      format: int32

    - `required string OutcomeID`

      The `outc_` ID of the outcome being evaluated.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when outcome evaluation started.

      format: date-time

  - `class BetaManagedAgentsSpanOutcomeEvaluationEndEvent`

    Emitted when an outcome evaluation cycle completes. Carries the verdict and aggregate token usage. A verdict of `needs_revision` means another evaluation cycle follows; `satisfied`, `max_iterations_reached`, `failed`, or `interrupted` are terminal — no further evaluation cycles follow.

    - `JsonElement Type = "span.outcome_evaluation_end"`

    - `required string ID`

      Unique identifier for this event.

    - `required string Explanation`

      Human-readable explanation of the verdict. For `needs_revision`, describes which criteria failed and why.

    - `required int Iteration`

      0-indexed revision cycle, matching the corresponding `span.outcome_evaluation_start`.

      format: int32

    - `required string OutcomeEvaluationStartID`

      The id of the corresponding `span.outcome_evaluation_start` event.

    - `required string OutcomeID`

      The `outc_` ID of the outcome being evaluated.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when outcome evaluation ended.

      format: date-time

    - `required string Result`

      Evaluation verdict. 'satisfied': criteria met, session goes idle. 'needs_revision': criteria not met, another revision cycle follows. 'max_iterations_reached': evaluation budget exhausted with criteria still unmet — one final acknowledgment turn follows before the session goes idle, but no further evaluation runs. 'failed': grader determined the rubric does not apply to the deliverables. 'interrupted': user sent an interrupt while evaluation was in progress.

    - `required BetaManagedAgentsSpanModelUsage Usage`

      Aggregate token usage for this evaluation cycle. Sums across all grader model requests within the cycle.

      - `required int CacheCreationInputTokens`

        Tokens used to create prompt cache in this request.

        format: int32

      - `required int CacheReadInputTokens`

        Tokens read from prompt cache in this request.

        format: int32

      - `required int InputTokens`

        Input tokens consumed by this request.

        format: int32

      - `required int OutputTokens`

        Output tokens generated by this request.

        format: int32

      - `Speed? Speed`

        Inference speed tier this request actually ran at. Mirrors `usage.speed` on /v1/messages. Only present when the fast-mode beta is active.

        - `Standard("standard")`

        - `Fast("fast")`

  - `class BetaManagedAgentsSpanModelRequestStartEvent`

    Emitted when a model request is initiated by the agent.

    - `JsonElement Type = "span.model_request_start"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the model request started.

      format: date-time

  - `class BetaManagedAgentsSpanModelRequestEndEvent`

    Emitted when a model request completes.

    - `JsonElement Type = "span.model_request_end"`

    - `required string ID`

      Unique identifier for this event.

    - `required bool? IsError`

      Whether the model request resulted in an error.

    - `required string ModelRequestStartID`

      The id of the corresponding `span.model_request_start` event.

    - `required BetaManagedAgentsSpanModelUsage ModelUsage`

      Token usage for this model request.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the model request completed.

      format: date-time

  - `class BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent`

    Periodic heartbeat emitted while an outcome evaluation cycle is in progress. Distinguishes 'evaluation is actively running' from 'evaluation is stuck' between the corresponding `span.outcome_evaluation_start` and `span.outcome_evaluation_end` events.

    - `JsonElement Type = "span.outcome_evaluation_ongoing"`

    - `required string ID`

      Unique identifier for this event.

    - `required int Iteration`

      0-indexed revision cycle, matching the corresponding `span.outcome_evaluation_start`.

      format: int32

    - `required string OutcomeID`

      The `outc_` ID of the outcome being evaluated.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this heartbeat was emitted.

      format: date-time

  - `class BetaManagedAgentsUserDefineOutcomeEvent`

    Echo of a `user.define_outcome` input event. Carries the server-generated `outcome_id` that subsequent `span.outcome_evaluation_*` events reference.

    - `JsonElement Type = "user.define_outcome"`

    - `required string ID`

      Unique identifier for this event.

    - `required string Description`

      What the agent should produce. Copied from the input event.

    - `required int? MaxIterations`

      Evaluate-then-revise cycles before giving up. Default 3, max 20.

      format: int32

    - `required string OutcomeID`

      Server-generated `outc_` ID for this outcome. Referenced by `span.outcome_evaluation_*` events and the session's `outcome_evaluations` list.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the outcome was accepted.

      format: date-time

    - `required Rubric Rubric`

      How to grade the outcome. File rubrics are currently resolved to their text content; clients should handle both variants.

      - `class BetaManagedAgentsFileRubric`

        Rubric referenced by a file uploaded via the Files API.

        - `JsonElement Type = "file"`

        - `required string FileID`

          ID of the rubric file.

      - `class BetaManagedAgentsTextRubric`

        Rubric content provided inline as text.

        - `JsonElement Type = "text"`

        - `required string Content`

          Rubric content. Plain text or markdown — the grader treats it as freeform text.

  - `class BetaManagedAgentsSessionDeletedEvent`

    Emitted when a session has been deleted. Terminates any active event stream — no further events will be emitted for this session.

    - `JsonElement Type = "session.deleted"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the session was deleted.

      format: date-time

  - `class BetaManagedAgentsSessionThreadStatusRunningEvent`

    A session thread has begun executing. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.

    - `JsonElement Type = "session.thread_status_running"`

    - `required string ID`

      Unique identifier for this event.

    - `required string AgentName`

      Name of the agent the thread runs.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of the status transition.

      format: date-time

    - `required string SessionThreadID`

      Public sthr_ ID of the thread that started running.

  - `class BetaManagedAgentsSessionThreadStatusIdleEvent`

    A session thread has yielded and is awaiting input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.

    - `JsonElement Type = "session.thread_status_idle"`

    - `required string ID`

      Unique identifier for this event.

    - `required string AgentName`

      Name of the agent the thread runs.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of the status transition.

      format: date-time

    - `required string SessionThreadID`

      Public sthr_ ID of the thread that went idle.

    - `required BetaManagedAgentsSessionRefusalStopDetails? StopDetails`

      Structured information about why the thread stopped. `null` when there is nothing more to report.

    - `required StopReason StopReason`

      - `class BetaManagedAgentsSessionEndTurn`

        The agent completed its turn naturally and is ready for the next user message.

      - `class BetaManagedAgentsSessionRequiresAction`

        The agent is idle waiting on one or more blocking user-input events (tool confirmation, custom tool result, etc.). Resolving all of them transitions the session back to running.

      - `class BetaManagedAgentsSessionRetriesExhausted`

        The turn ended because repeated errors exhausted the retry budget or an error escalated to `retry_status: 'exhausted'`.

      - `class BetaManagedAgentsSessionBudgetReached`

        The agent stopped because the session's tracked list cost reached its budget, or because its usage includes a model with no list price (which the budget cannot measure). Raise the budget to continue — or, if raising is rejected because a model has no list price, remove the budget.

      - `class BetaManagedAgentsSessionRefusal`

        The turn ended because the model's response was refused, for example by a safety classifier.

  - `class BetaManagedAgentsSessionThreadStatusTerminatedEvent`

    A session thread has terminated and will accept no further input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.

    - `JsonElement Type = "session.thread_status_terminated"`

    - `required string ID`

      Unique identifier for this event.

    - `required string AgentName`

      Name of the agent the thread runs.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of the status transition.

      format: date-time

    - `required string SessionThreadID`

      Public sthr_ ID of the thread that terminated.

  - `class BetaManagedAgentsUserToolResultEvent`

    Event sent by the client providing the result of an agent-toolset tool execution. Only valid on `self_hosted` environments, where sandbox-routed tools are executed by the client rather than the server.

    - `JsonElement Type = "user.tool_result"`

    - `required string ID`

      Unique identifier for this event.

    - `required string ToolUseID`

      The id of the `agent.tool_use` event this result corresponds to, which can be found in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

    - `IReadOnlyList<Content> Content`

      The result content returned by the tool.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsSearchResultBlock`

        A block containing a web search result.

    - `bool? IsError`

      Whether the tool execution resulted in an error.

    - `DateTimeOffset? ProcessedAt`

      Timestamp when this result was processed.

      format: date-time

    - `string? SessionThreadID`

      Set by the server to the subagent thread this result was routed to. Omitted when it was routed to the primary thread.

  - `class BetaManagedAgentsSessionThreadStatusRescheduledEvent`

    A session thread hit a transient error and is retrying automatically. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.

    - `JsonElement Type = "session.thread_status_rescheduled"`

    - `required string ID`

      Unique identifier for this event.

    - `required string AgentName`

      Name of the agent the thread runs.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of the status transition.

      format: date-time

    - `required string SessionThreadID`

      Public sthr_ ID of the thread that is retrying.

  - `class BetaManagedAgentsSessionUpdatedEvent`

    Emitted when an UpdateSession request changed at least one field. Carries only the fields that changed; absent fields were not part of the update. The new configuration applies from the next turn.

    - `JsonElement Type = "session.updated"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the update was applied.

      format: date-time

    - `BetaManagedAgentsSessionAgent? Agent`

      The session's effective agent configuration after the update. Present only when the update changed `agent` (tools or mcp_servers); when present it is the full materialised snapshot, not a diff.

      - `JsonElement Type = "agent"`

      - `required string ID`

      - `required string? Description`

      - `required BetaManagedAgentsExecutionIdentity ExecutionIdentity`

        Execution principal snapshotted from the agent at session creation. Always present; `{"type": "service_account"}` when runs carry no customer-named principal.

        - `class BetaManagedAgentsAwsRoleExecutionIdentity`

          An AWS IAM role principal as returned in API responses.

          - `JsonElement Type = "aws_role"`

          - `required string RoleArn`

            The IAM role's ARN.

        - `class BetaManagedAgentsServiceAccountExecutionIdentity`

          The Anthropic-managed service account as returned in API responses.

          - `JsonElement Type = "service_account"`

      - `required IReadOnlyList<BetaManagedAgentsMcpServerUrlDefinition> McpServers`

        - `JsonElement Type = "url"`

        - `required string Name`

        - `required string Url`

      - `required BetaManagedAgentsModelConfig Model`

        Model identifier and configuration.

        - `required BetaManagedAgentsModel ID`

          The model that will power your agent.

          See [models](https://docs.anthropic.com/en/docs/models-overview) for additional details and options.

          - `ClaudeHaiku5_5("claude-haiku-5-5")`

            Fastest model for high-volume, real-time tasks

          - `ClaudeSonnet5_5("claude-sonnet-5-5")`

            Efficient model for coding and agents

          - `ClaudeOpus5_5("claude-opus-5-5")`

            Powerful intelligence for coding, knowledge work, and long-running agents

          - `ClaudeFable5_1("claude-fable-5-1")`

            Frontier intelligence for ambitious tasks across coding, scientific discovery, and enterprise workflows

          - `ClaudeSonnet5("claude-sonnet-5")`

            Efficient model for coding and agents

          - `ClaudeFable5("claude-fable-5")`

            Next generation of intelligence for the hardest knowledge work and coding problems

          - `ClaudeOpus5("claude-opus-5")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeOpus4_8("claude-opus-4-8")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeOpus4_7("claude-opus-4-7")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeOpus4_6("claude-opus-4-6")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeSonnet4_6("claude-sonnet-4-6")`

            Best combination of speed and intelligence

          - `ClaudeHaiku4_5("claude-haiku-4-5")`

          - `ClaudeHaiku4_5_20251001("claude-haiku-4-5-20251001")`

          - `ClaudeOpus4_5("claude-opus-4-5")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeOpus4_5_20251101("claude-opus-4-5-20251101")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeSonnet4_5("claude-sonnet-4-5")`

            **Deprecated**: Will reach end-of-life on November 30, 2026. Please migrate to claude-sonnet-5-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.

            High-performance model for agents and coding

          - `ClaudeSonnet4_5_20250929("claude-sonnet-4-5-20250929")`

            **Deprecated**: Will reach end-of-life on November 30, 2026. Please migrate to claude-sonnet-5-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.

            High-performance model for agents and coding

        - `Effort Effort`

          How hard Claude works on each inference call. One of `low`, `medium`, `high`, `xhigh`, `max`. Always present; resolved to the per-model default at save time when not supplied.

          - `class BetaManagedAgentsEffortLow`

            Low effort. Favors latency over reasoning depth.

            - `JsonElement Type = "low"`

          - `class BetaManagedAgentsEffortMedium`

            Medium effort. Balances latency and reasoning depth.

            - `JsonElement Type = "medium"`

          - `class BetaManagedAgentsEffortHigh`

            High effort. Favors reasoning depth.

            - `JsonElement Type = "high"`

          - `class BetaManagedAgentsEffortXhigh`

            Extra-high effort. Not all models accept this level.

            - `JsonElement Type = "xhigh"`

          - `class BetaManagedAgentsEffortMax`

            Maximum effort. Favors reasoning depth over latency.

            - `JsonElement Type = "max"`

        - `string InferenceGeo`

          Geographic region for model inference. When unset, requests fall through to the workspace's default_inference_geo.

        - `Speed Speed`

          Inference speed mode. `fast` provides significantly faster output token generation at premium pricing. Defaults to `standard`. Not all models support `fast`; invalid combinations are rejected at create time.

          - `Standard("standard")`

          - `Fast("fast")`

      - `required BetaManagedAgentsSessionMultiagent? Multiagent`

        Resolved multiagent orchestration configuration. Null when the agent is single-threaded.

        - `class BetaManagedAgentsSessionMultiagentCoordinator`

          Resolved coordinator topology with full agent definitions for each roster member.

          - `JsonElement Type = "coordinator"`

          - `required IReadOnlyList<Agent> Agents`

            Full `agent` definitions the coordinator may spawn as session threads.

            - `class BetaManagedAgentsSessionThreadAgent`

              Resolved `agent` definition for a single `session_thread`. Snapshot of the agent at thread creation time. The multiagent roster is not repeated here; read it from `Session.agent`.

              - `JsonElement Type = "agent"`

              - `required string ID`

              - `required string? Description`

              - `required BetaManagedAgentsExecutionIdentity ExecutionIdentity`

                Execution principal snapshotted from the agent at session creation. Always present; `{"type": "service_account"}` when runs carry no customer-named principal.

              - `required IReadOnlyList<BetaManagedAgentsMcpServerUrlDefinition> McpServers`

                - `JsonElement Type = "url"`

                - `required string Name`

                - `required string Url`

              - `required BetaManagedAgentsModelConfig Model`

                Model identifier and configuration.

              - `required string Name`

              - `required IReadOnlyList<Skill> Skills`

                - `class BetaManagedAgentsAnthropicSkill`

                  A resolved Anthropic-managed skill.

                  - `JsonElement Type = "anthropic"`

                  - `required string SkillID`

                  - `required string Version`

                - `class BetaManagedAgentsCustomSkill`

                  A resolved user-created custom skill.

                  - `JsonElement Type = "custom"`

                  - `required string SkillID`

                  - `required string Version`

              - `required string? System`

              - `required IReadOnlyList<Tool> Tools`

                - `class BetaManagedAgentsAgentToolset20260401`

                  - `JsonElement Type = "agent_toolset_20260401"`

                  - `required IReadOnlyList<BetaManagedAgentsAgentToolConfig> Configs`

                    - `class BetaManagedAgentsBashToolConfig`

                      Configuration for the bash tool.

                      - `JsonElement Type = "bash"`

                      - `required bool Enabled`

                      - `JsonElement Name = "bash"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                          - `JsonElement Type = "always_allow"`

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                          - `JsonElement Type = "always_ask"`

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                          - `JsonElement Type = "auto"`

                    - `class BetaManagedAgentsEditToolConfig`

                      Configuration for the edit tool.

                      - `JsonElement Type = "edit"`

                      - `required bool Enabled`

                      - `JsonElement Name = "edit"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                    - `class BetaManagedAgentsReadToolConfig`

                      Configuration for the read tool.

                      - `JsonElement Type = "read"`

                      - `required bool Enabled`

                      - `JsonElement Name = "read"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                    - `class BetaManagedAgentsWriteToolConfig`

                      Configuration for the write tool.

                      - `JsonElement Type = "write"`

                      - `required bool Enabled`

                      - `JsonElement Name = "write"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                    - `class BetaManagedAgentsGlobToolConfig`

                      Configuration for the glob tool.

                      - `JsonElement Type = "glob"`

                      - `required bool Enabled`

                      - `JsonElement Name = "glob"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                    - `class BetaManagedAgentsGrepToolConfig`

                      Configuration for the grep tool.

                      - `JsonElement Type = "grep"`

                      - `required bool Enabled`

                      - `JsonElement Name = "grep"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                    - `class BetaManagedAgentsWebFetchToolConfig`

                      Configuration for the web_fetch tool.

                      - `JsonElement Type = "web_fetch"`

                      - `required bool Enabled`

                      - `JsonElement Name = "web_fetch"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                      - `required BetaManagedAgentsWebFetchUrlSources? UrlSources`

                        Which sources contribute URLs the tool may fetch, always in the object form. Null when not set, which allows every source.

                        - `required BetaManagedAgentsWebFetchUrlSourceToolFilter? ClientToolResults`

                          Which custom tools' results contribute URLs that may be fetched. Null when not set, which allows every custom tool's results.

                          - `class BetaManagedAgentsWebFetchUrlSourceAll`

                            Every URL from this source may be fetched. This is the default.

                            - `JsonElement Type = "all"`

                          - `class BetaManagedAgentsWebFetchUrlSourceNone`

                            This source contributes no URLs that may be fetched.

                            - `JsonElement Type = "none"`

                          - `class BetaManagedAgentsWebFetchUrlSourceOnly`

                            Only the named tools' results contribute URLs that may be fetched.

                            - `JsonElement Type = "only"`

                            - `required IReadOnlyList<BetaManagedAgentsWebFetchUrlSourceToolReference> Tools`

                              The tools whose results contribute. Between 1 and 128 entries, each with a different name. An empty list is rejected; use "none" to allow no tool's results.

                              - `JsonElement Type = "tool_reference"`

                                Must be "tool_reference".

                              - `required string Name`

                                Name of the tool. Compared exactly, so upper and lower case letters are different.

                                minLength: 1, maxLength: 128

                          - `class BetaManagedAgentsWebFetchUrlSourceExcept`

                            Every tool's results contribute URLs that may be fetched, except the named tools' results.

                            - `JsonElement Type = "except"`

                            - `required IReadOnlyList<BetaManagedAgentsWebFetchUrlSourceToolReference> Tools`

                              The tools whose results do not contribute. Between 1 and 128 entries, each with a different name. An empty list is rejected; use "all" to leave out no tool's results.

                              - `JsonElement Type = "tool_reference"`

                                Must be "tool_reference".

                              - `required string Name`

                                Name of the tool. Compared exactly, so upper and lower case letters are different.

                                minLength: 1, maxLength: 128

                        - `required BetaManagedAgentsWebFetchUrlSourceToolFilter? ServerToolResults`

                          Which of the web_search and web_fetch tools' results contribute URLs that may be fetched. Null when not set, which allows both.

                        - `required BetaManagedAgentsWebFetchUrlSourceUserInput? UserInput`

                          Whether URLs in the text of user messages may be fetched. Null when not set, which allows them.

                          - `class BetaManagedAgentsWebFetchUrlSourceAll`

                            Every URL from this source may be fetched. This is the default.

                          - `class BetaManagedAgentsWebFetchUrlSourceNone`

                            This source contributes no URLs that may be fetched.

                      - `IReadOnlyList<string> AllowedDomains`

                      - `IReadOnlyList<string> BlockedDomains`

                      - `int? MaxContentTokens`

                        format: int32

                    - `class BetaManagedAgentsWebSearchToolConfig`

                      Configuration for the web_search tool.

                      - `JsonElement Type = "web_search"`

                      - `required bool Enabled`

                      - `JsonElement Name = "web_search"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                      - `IReadOnlyList<string> AllowedDomains`

                      - `IReadOnlyList<string> BlockedDomains`

                      - `BetaManagedAgentsUserLocation? UserLocation`

                        Approximate user location for search result localization.

                        - `JsonElement Type = "approximate"`

                          Location precision. Only "approximate" is supported.

                        - `string? City`

                          City name.

                          minLength: 1, maxLength: 255

                        - `string? Country`

                          Two-letter ISO 3166-1 country code, uppercase.

                          pattern: ^[A-Z]{2}$

                        - `string? Region`

                          Region or state name.

                          minLength: 1, maxLength: 255

                        - `string? Timezone`

                          IANA timezone identifier, e.g. "America/Los_Angeles".

                          minLength: 1, maxLength: 255

                  - `required BetaManagedAgentsAgentToolsetDefaultConfig DefaultConfig`

                    Resolved default configuration for agent tools.

                    - `required bool Enabled`

                    - `required PermissionPolicy PermissionPolicy`

                      Permission policy for tool execution.

                      - `class BetaManagedAgentsAlwaysAllowPolicy`

                        Tool calls are automatically approved without user confirmation.

                      - `class BetaManagedAgentsAlwaysAskPolicy`

                        Tool calls require user confirmation before execution.

                      - `class BetaManagedAgentsAutoPolicy`

                        The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                - `class BetaManagedAgentsMcpToolset`

                  - `JsonElement Type = "mcp_toolset"`

                  - `required IReadOnlyList<BetaManagedAgentsMcpToolConfig> Configs`

                    - `required bool Enabled`

                    - `required string Name`

                    - `required PermissionPolicy PermissionPolicy`

                      Permission policy for tool execution.

                      - `class BetaManagedAgentsAlwaysAllowPolicy`

                        Tool calls are automatically approved without user confirmation.

                      - `class BetaManagedAgentsAlwaysAskPolicy`

                        Tool calls require user confirmation before execution.

                      - `class BetaManagedAgentsAutoPolicy`

                        The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                  - `required BetaManagedAgentsMcpToolsetDefaultConfig DefaultConfig`

                    Resolved default configuration for all tools from an MCP server.

                    - `required bool Enabled`

                    - `required PermissionPolicy PermissionPolicy`

                      Permission policy for tool execution.

                      - `class BetaManagedAgentsAlwaysAllowPolicy`

                        Tool calls are automatically approved without user confirmation.

                      - `class BetaManagedAgentsAlwaysAskPolicy`

                        Tool calls require user confirmation before execution.

                      - `class BetaManagedAgentsAutoPolicy`

                        The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                  - `required string McpServerName`

                - `class BetaManagedAgentsCustomTool`

                  A custom tool as returned in API responses.

                  - `JsonElement Type = "custom"`

                  - `required string Description`

                  - `required BetaManagedAgentsCustomToolInputSchema InputSchema`

                    JSON Schema for custom tool input parameters.

                    - `JsonElement Type = "object"`

                    - `IReadOnlyDictionary<string, JsonElement>? Properties`

                    - `IReadOnlyList<string>? Required`

                  - `required string Name`

              - `required int Version`

                format: int32

            - `class BetaManagedAgentsAdvisor`

              Platform advisor roster entry: a model the session's primary thread may consult mid-turn.

              - `JsonElement Type = "advisor"`

              - `required string Model`

                The advisor model id.

        - `class BetaManagedAgentsSessionMultiagent20261001`

          Resolved multiagent configuration with three members, as copied to the `session` at creation.

          - `JsonElement Type = "multiagent_20261001"`

          - `required BetaManagedAgentsMultiagentAdvisor Advisor`

            Whether the session's primary thread can consult an advisor model.

            - `class BetaManagedAgentsMultiagentAdvisorEnabled`

              The session's primary thread can consult `model` mid-turn.

              - `JsonElement Type = "enabled"`

              - `required string Model`

                The advisor model id.

            - `class BetaManagedAgentsMultiagentAdvisorDisabled`

              The agent has no advisor.

              - `JsonElement Type = "disabled"`

          - `required BetaManagedAgentsSessionMultiagentSubagents Subagents`

            Whether the agent can spawn session threads.

            - `class BetaManagedAgentsSessionMultiagentSubagentsEnabled`

              The agent can spawn session threads.

              - `JsonElement Type = "enabled"`

              - `required BetaManagedAgentsMultiagentInlineAgents InlineAgents`

                Whether the agent can define inline agents, which are not saved, when it spawns session threads.

                - `class BetaManagedAgentsMultiagentInlineAgentsEnabled`

                  The agent can define inline agents.

                  - `JsonElement Type = "enabled"`

                - `class BetaManagedAgentsMultiagentInlineAgentsDisabled`

                  The agent cannot define inline agents.

                  - `JsonElement Type = "disabled"`

              - `required IReadOnlyList<BetaManagedAgentsSessionThreadAgent> PredefinedAgents`

                Full `agent` definitions of the predefined agents, which are saved agents that this agent can spawn as session threads.

                - `JsonElement Type = "agent"`

                - `required string ID`

                - `required string? Description`

                - `required BetaManagedAgentsExecutionIdentity ExecutionIdentity`

                  Execution principal snapshotted from the agent at session creation. Always present; `{"type": "service_account"}` when runs carry no customer-named principal.

                - `required IReadOnlyList<BetaManagedAgentsMcpServerUrlDefinition> McpServers`

                - `required BetaManagedAgentsModelConfig Model`

                  Model identifier and configuration.

                - `required string Name`

                - `required IReadOnlyList<Skill> Skills`

                - `required string? System`

                - `required IReadOnlyList<Tool> Tools`

                - `required int Version`

                  format: int32

            - `class BetaManagedAgentsMultiagentSubagentsDisabled`

              The agent cannot spawn session threads.

              - `JsonElement Type = "disabled"`

          - `required BetaManagedAgentsSessionMultiagentWorkflows Workflows`

            Whether the agent can start workflow runs.

            - `class BetaManagedAgentsSessionMultiagentWorkflowsEnabled`

              The agent can start workflow runs.

              - `JsonElement Type = "enabled"`

              - `required BetaManagedAgentsMultiagentInlineAgents InlineAgents`

                Whether a run's plan can define inline agents, which are not saved.

              - `required IReadOnlyList<BetaManagedAgentsSessionThreadAgent> PredefinedAgents`

                Full `agent` definitions of the predefined agents, which are saved agents that a run's plan can use.

                - `JsonElement Type = "agent"`

                - `required string ID`

                - `required string? Description`

                - `required BetaManagedAgentsExecutionIdentity ExecutionIdentity`

                  Execution principal snapshotted from the agent at session creation. Always present; `{"type": "service_account"}` when runs carry no customer-named principal.

                - `required IReadOnlyList<BetaManagedAgentsMcpServerUrlDefinition> McpServers`

                - `required BetaManagedAgentsModelConfig Model`

                  Model identifier and configuration.

                - `required string Name`

                - `required IReadOnlyList<Skill> Skills`

                - `required string? System`

                - `required IReadOnlyList<Tool> Tools`

                - `required int Version`

                  format: int32

            - `class BetaManagedAgentsMultiagentWorkflowsDisabled`

              The agent cannot start workflow runs.

              - `JsonElement Type = "disabled"`

      - `required string Name`

      - `required IReadOnlyList<Skill> Skills`

        - `class BetaManagedAgentsAnthropicSkill`

          A resolved Anthropic-managed skill.

        - `class BetaManagedAgentsCustomSkill`

          A resolved user-created custom skill.

      - `required string? System`

      - `required IReadOnlyList<Tool> Tools`

        - `class BetaManagedAgentsAgentToolset20260401`

        - `class BetaManagedAgentsMcpToolset`

        - `class BetaManagedAgentsCustomTool`

          A custom tool as returned in API responses.

      - `required int Version`

        format: int32

    - `BetaManagedAgentsBudgetLimit? Budget`

      The session's budget after the update: the new budget when set or replaced, or null when the update removed it. Present only when the update changed the budget.

      - `JsonElement Type = "limit"`

      - `required BetaMonetaryAmount MaxListCost`

        Maximum list cost the session may accrue. List price is used regardless of any negotiated discount, so the cap fires at or before the actual charge.

        - `required string Amount`

          Amount in minor units of the currency, as an integer decimal string with no leading zeros: "2500" is $25.00 and "50" is fifty cents. A string rather than a number so no float rounding is ever applied.

          pattern: ^(0|[1-9]\d*)$

        - `required BetaCurrency Currency`

          Uppercase ISO-4217 currency code. `USD` is the only currency currently supported; the accepted set is closed and grows only when a new currency is priced.

    - `IReadOnlyDictionary<string, string> Metadata`

      The session's full metadata bag after the update. Present when the update set non-empty metadata; absent when metadata was unchanged or cleared to empty.

    - `string? Title`

      The session's new title. Present only when the update changed it.

  - `class BetaManagedAgentsSystemMessageEvent`

    A mid-conversation system message event. Carries system-role content that is appended to the session as a `role: "system"` turn.

    - `JsonElement Type = "system.message"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyList<BetaManagedAgentsSystemContentBlock> Content`

      System content blocks. Text-only.

      - `JsonElement Type = "text"`

      - `required string Text`

        The text content.

        minLength: 1

    - `DateTimeOffset? ProcessedAt`

      Timestamp when this system message was processed.

      format: date-time

  - `class BetaManagedAgentsSessionUsageEvent`

    Periodic snapshot of the session's cumulative usage and tracked list cost.

    - `JsonElement Type = "session.usage"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the snapshot was taken.

      format: date-time

    - `required BetaManagedAgentsSessionUsageSnapshot Usage`

      The session's cumulative usage at the snapshot time.

      - `double ActiveSeconds`

        Cumulative time in seconds during which the session had at least one thread in running status. Overlapping activity from concurrent threads is counted once. This is the duration the session's runtime cost is priced on.

        format: double

      - `BetaManagedAgentsCacheCreationUsage CacheCreation`

        Tokens used to create prompt cache entries, broken down by cache TTL.

        - `int Ephemeral1hInputTokens`

          Tokens used to create 1-hour ephemeral cache entries.

          format: int32

        - `int Ephemeral5mInputTokens`

          Tokens used to create 5-minute ephemeral cache entries.

          format: int32

      - `int CacheReadInputTokens`

        Total tokens read from prompt cache.

        format: int32

      - `int InputTokens`

        Total input tokens consumed across all turns.

        format: int32

      - `BetaMonetaryAmount ListCost`

        Cumulative list cost of the session across all turns, priced at public list rates.

      - `int OutputTokens`

        Total output tokens generated across all turns.

        format: int32

      - `BetaManagedAgentsServerToolUsage ServerToolUse`

        Cumulative server-executed tool usage across all turns.

        - `int WebFetchRequests`

          Number of server-executed web fetch requests.

          format: int32

        - `int WebSearchRequests`

          Number of server-executed web search requests.

          format: int32

    - `BetaManagedAgentsBudgetLimit? Budget`

      The session's configured budget at the snapshot time, or null when the session has no budget.

  - `class BetaManagedAgentsWorkflowRunCreatedEvent`

    A workflow run was created. A workflow run is background work that the session's agent starts. Emitted once per run, before the run's other `workflow_run.*` events.

    - `JsonElement Type = "workflow_run.created"`

    - `required string ID`

      Unique identifier for this event.

    - `required string? Description`

      Description that the agent gave the run, passed on as written, or `null` if it gave none.

    - `required string Name`

      Name that the agent gave the run, passed on as written, or a name that the server assigned.

    - `required IReadOnlyList<BetaManagedAgentsWorkflowRunPhase> Phases`

      The phases that the run's plan declares, in the plan's order. Can be empty.

      - `required string ID`

        Unique identifier for the phase.

      - `required string? Description`

        Description that the agent gave the phase, passed on as written, or `null` if it gave none.

      - `required string Name`

        Name that the agent gave the phase, passed on as written.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

  - `class BetaManagedAgentsWorkflowRunStatusEndedEvent`

    A workflow run ended. Emitted once per run, as the last of the run's `workflow_run.*` events.

    - `JsonElement Type = "workflow_run.status_ended"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required BetaManagedAgentsWorkflowRunResult Result`

      How the run ended.

      - `class BetaManagedAgentsWorkflowRunResultCompleted`

        The run's plan, a program that the agent wrote, finished. This does not say whether the work succeeded.

        - `JsonElement Type = "completed"`

      - `class BetaManagedAgentsWorkflowRunResultError`

        The run failed or reached its time limit.

        - `JsonElement Type = "error"`

        - `required BetaManagedAgentsWorkflowRunError Error`

          Why the run did not finish.

          - `class BetaManagedAgentsTimeoutWorkflowRunError`

            The run reached its time limit.

            - `JsonElement Type = "timeout_error"`

            - `required string Message`

              Short explanation written by the server. It never contains content from the run or its agents.

          - `class BetaManagedAgentsProgramWorkflowRunError`

            The plan, a program that the agent wrote, failed, or the server refused it.

            - `JsonElement Type = "program_error"`

            - `required string Message`

              Short explanation written by the server. It never contains content from the run or its agents.

          - `class BetaManagedAgentsUnknownWorkflowRunError`

            A failure that has no type of its own.

            - `JsonElement Type = "unknown_error"`

            - `required string Message`

              Short explanation written by the server. It never contains content from the run or its agents.

          - `class BetaManagedAgentsThreadLimitWorkflowRunError`

            The run exceeded the limit on the number of threads that a run can create.

            - `JsonElement Type = "thread_limit_error"`

            - `required string Message`

              Short explanation written by the server. It never contains content from the run or its agents.

          - `class BetaManagedAgentsMaxWorkflowRunsWorkflowRunError`

            No run was created, because the session was at its limit of open workflow runs, which are runs that have not ended. Only `workflow_run.error` carries this type.

            - `JsonElement Type = "max_workflow_runs_error"`

            - `required string Message`

              Short explanation written by the server. It never contains content from the run or its agents.

      - `class BetaManagedAgentsWorkflowRunResultStopped`

        The agent stopped the run.

        - `JsonElement Type = "stopped"`

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

  - `class BetaManagedAgentsWorkflowRunPhaseStartedEvent`

    A workflow run's plan entered a phase.

    - `JsonElement Type = "workflow_run.phase_started"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

    - `required string WorkflowRunPhaseID`

      Identifier of the phase, as in `phases` on the run's `workflow_run.created` event.

  - `class BetaManagedAgentsWorkflowRunPhaseEndedEvent`

    A workflow run's plan left a phase, or the run's end closed it. Emitted once for every `workflow_run.phase_started` event, before the run's `workflow_run.status_ended` event. The event does not say whether the plan finished the phase's work, or why it left.

    - `JsonElement Type = "workflow_run.phase_ended"`

    - `required string ID`

      Unique identifier for this event.

    - `required string PhaseStartedID`

      Identifier of the `workflow_run.phase_started` event that opened the phase.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

    - `required string WorkflowRunPhaseID`

      Identifier of the phase, as in `phases` on the run's `workflow_run.created` event.

  - `class BetaManagedAgentsWorkflowRunStatusRunningEvent`

    A workflow run is running. Emitted when the run starts to execute, and each time it resumes after being idle. A run that starts idle emits `workflow_run.status_idle` first.

    - `JsonElement Type = "workflow_run.status_running"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

  - `class BetaManagedAgentsWorkflowRunStatusIdleEvent`

    A workflow run is idle. Emitted each time the run goes idle, whatever the cause. If the run ends while idle, no `workflow_run.status_running` comes between this event and its `workflow_run.status_ended`.

    - `JsonElement Type = "workflow_run.status_idle"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

  - `class BetaManagedAgentsWorkflowRunErrorEvent`

    A workflow run met an error, or an error kept a run from being created. A run that ends with a `result.type` of `error` emits this event before its `workflow_run.status_ended`, with the same `error`.

    - `JsonElement Type = "workflow_run.error"`

    - `required string ID`

      Unique identifier for this event.

    - `required BetaManagedAgentsWorkflowRunError Error`

      Why the run did not finish, or was not created.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string? WorkflowRunID`

      Identifier of the run that met the error, or `null` when the error kept a run from being created.

### Beta Managed Agents Session Event Type

- `enum BetaManagedAgentsSessionEventType`

  The `type` of a session event.

  - `UserMessage("user.message")`

  - `UserInterrupt("user.interrupt")`

  - `UserToolConfirmation("user.tool_confirmation")`

  - `UserCustomToolResult("user.custom_tool_result")`

  - `AgentCustomToolUse("agent.custom_tool_use")`

  - `AgentMessage("agent.message")`

  - `AgentThinking("agent.thinking")`

  - `AgentMcpToolUse("agent.mcp_tool_use")`

  - `AgentMcpToolResult("agent.mcp_tool_result")`

  - `AgentToolUse("agent.tool_use")`

  - `AgentToolResult("agent.tool_result")`

  - `AgentThreadMessageReceived("agent.thread_message_received")`

  - `AgentThreadMessageSent("agent.thread_message_sent")`

  - `AgentThreadContextCompacted("agent.thread_context_compacted")`

  - `SessionError("session.error")`

  - `SessionStatusRescheduled("session.status_rescheduled")`

  - `SessionStatusRunning("session.status_running")`

  - `SessionStatusIdle("session.status_idle")`

  - `SessionStatusTerminated("session.status_terminated")`

  - `SessionThreadCreated("session.thread_created")`

  - `SpanOutcomeEvaluationStart("span.outcome_evaluation_start")`

  - `SpanOutcomeEvaluationEnd("span.outcome_evaluation_end")`

  - `SpanModelRequestStart("span.model_request_start")`

  - `SpanModelRequestEnd("span.model_request_end")`

  - `SpanOutcomeEvaluationOngoing("span.outcome_evaluation_ongoing")`

  - `UserDefineOutcome("user.define_outcome")`

  - `SessionThreadStatusRunning("session.thread_status_running")`

  - `SessionThreadStatusIdle("session.thread_status_idle")`

  - `SessionThreadStatusTerminated("session.thread_status_terminated")`

  - `UserToolResult("user.tool_result")`

  - `SessionThreadStatusRescheduled("session.thread_status_rescheduled")`

  - `SessionUpdated("session.updated")`

  - `SystemMessage("system.message")`

  - `SessionUsage("session.usage")`

  - `WorkflowRunCreated("workflow_run.created")`

  - `WorkflowRunStatusRunning("workflow_run.status_running")`

  - `WorkflowRunStatusIdle("workflow_run.status_idle")`

  - `WorkflowRunStatusEnded("workflow_run.status_ended")`

  - `WorkflowRunError("workflow_run.error")`

  - `WorkflowRunPhaseStarted("workflow_run.phase_started")`

  - `WorkflowRunPhaseEnded("workflow_run.phase_ended")`

### Beta Managed Agents Session Refusal

- `class BetaManagedAgentsSessionRefusal`

  The turn ended because the model's response was refused, for example by a safety classifier.

  - `JsonElement Type = "refusal"`

### Beta Managed Agents Session Refusal Stop Details

- `class BetaManagedAgentsSessionRefusalStopDetails`

  Structured information about a refusal.

  - `JsonElement Type = "refusal"`

  - `required Category? Category`

    The policy category that triggered the refusal, or `null` when there is no named category. New values can be added over time.

    - `Cyber("cyber")`

    - `Bio("bio")`

    - `FrontierLlm("frontier_llm")`

    - `ReasoningExtraction("reasoning_extraction")`

    - `GeneralHarms("general_harms")`

  - `required string? Explanation`

    Human-readable explanation of the refusal, or `null` when none is available. The wording can change, so do not parse it.

### Beta Managed Agents Session Requires Action

- `class BetaManagedAgentsSessionRequiresAction`

  The agent is idle waiting on one or more blocking user-input events (tool confirmation, custom tool result, etc.). Resolving all of them transitions the session back to running.

  - `JsonElement Type = "requires_action"`

  - `required IReadOnlyList<string> EventIds`

    The ids of events the agent is blocked on. Resolving fewer than all re-emits `session.status_idle` with the remainder.

### Beta Managed Agents Session Retries Exhausted

- `class BetaManagedAgentsSessionRetriesExhausted`

  The turn ended because repeated errors exhausted the retry budget or an error escalated to `retry_status: 'exhausted'`.

  - `JsonElement Type = "retries_exhausted"`

### Beta Managed Agents Session Status Idle Event

- `class BetaManagedAgentsSessionStatusIdleEvent`

  Indicates the agent has paused and is awaiting user input.

  - `JsonElement Type = "session.status_idle"`

  - `required string ID`

    Unique identifier for this event.

  - `required DateTimeOffset ProcessedAt`

    Timestamp of status change.

    format: date-time

  - `required BetaManagedAgentsSessionRefusalStopDetails? StopDetails`

    Structured information about why the session stopped. `null` when there is nothing more to report.

    - `JsonElement Type = "refusal"`

    - `required Category? Category`

      The policy category that triggered the refusal, or `null` when there is no named category. New values can be added over time.

      - `Cyber("cyber")`

      - `Bio("bio")`

      - `FrontierLlm("frontier_llm")`

      - `ReasoningExtraction("reasoning_extraction")`

      - `GeneralHarms("general_harms")`

    - `required string? Explanation`

      Human-readable explanation of the refusal, or `null` when none is available. The wording can change, so do not parse it.

  - `required StopReason StopReason`

    - `class BetaManagedAgentsSessionEndTurn`

      The agent completed its turn naturally and is ready for the next user message.

      - `JsonElement Type = "end_turn"`

    - `class BetaManagedAgentsSessionRequiresAction`

      The agent is idle waiting on one or more blocking user-input events (tool confirmation, custom tool result, etc.). Resolving all of them transitions the session back to running.

      - `JsonElement Type = "requires_action"`

      - `required IReadOnlyList<string> EventIds`

        The ids of events the agent is blocked on. Resolving fewer than all re-emits `session.status_idle` with the remainder.

    - `class BetaManagedAgentsSessionRetriesExhausted`

      The turn ended because repeated errors exhausted the retry budget or an error escalated to `retry_status: 'exhausted'`.

      - `JsonElement Type = "retries_exhausted"`

    - `class BetaManagedAgentsSessionBudgetReached`

      The agent stopped because the session's tracked list cost reached its budget, or because its usage includes a model with no list price (which the budget cannot measure). Raise the budget to continue — or, if raising is rejected because a model has no list price, remove the budget.

      - `JsonElement Type = "budget_reached"`

    - `class BetaManagedAgentsSessionRefusal`

      The turn ended because the model's response was refused, for example by a safety classifier.

      - `JsonElement Type = "refusal"`

### Beta Managed Agents Session Status Rescheduled Event

- `class BetaManagedAgentsSessionStatusRescheduledEvent`

  Indicates the session is recovering from an error state and is rescheduled for execution.

  - `JsonElement Type = "session.status_rescheduled"`

  - `required string ID`

    Unique identifier for this event.

  - `required DateTimeOffset ProcessedAt`

    Timestamp of status change.

    format: date-time

### Beta Managed Agents Session Status Running Event

- `class BetaManagedAgentsSessionStatusRunningEvent`

  Indicates the session is actively running and the agent is working.

  - `JsonElement Type = "session.status_running"`

  - `required string ID`

    Unique identifier for this event.

  - `required DateTimeOffset ProcessedAt`

    Timestamp of status change.

    format: date-time

### Beta Managed Agents Session Status Terminated Event

- `class BetaManagedAgentsSessionStatusTerminatedEvent`

  Indicates the session has terminated, either due to an error or completion.

  - `JsonElement Type = "session.status_terminated"`

  - `required string ID`

    Unique identifier for this event.

  - `required DateTimeOffset ProcessedAt`

    Timestamp of status change.

    format: date-time

### Beta Managed Agents Session Thread Created Event

- `class BetaManagedAgentsSessionThreadCreatedEvent`

  Emitted when a child thread is created. Written to the parent thread's output stream so clients observing the session see child creation.

  - `JsonElement Type = "session.thread_created"`

  - `required string ID`

    Unique identifier for this event.

  - `required string AgentName`

    Name of the callable agent the thread runs.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when the thread was created.

    format: date-time

  - `required string SessionThreadID`

    Public `sthr_` ID of the newly created thread.

  - `required string? WorkflowRunID`

    Identifier of the workflow run that created the thread, or `null` for any other thread.

### Beta Managed Agents Session Thread Status Idle Event

- `class BetaManagedAgentsSessionThreadStatusIdleEvent`

  A session thread has yielded and is awaiting input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.

  - `JsonElement Type = "session.thread_status_idle"`

  - `required string ID`

    Unique identifier for this event.

  - `required string AgentName`

    Name of the agent the thread runs.

  - `required DateTimeOffset ProcessedAt`

    Timestamp of the status transition.

    format: date-time

  - `required string SessionThreadID`

    Public sthr_ ID of the thread that went idle.

  - `required BetaManagedAgentsSessionRefusalStopDetails? StopDetails`

    Structured information about why the thread stopped. `null` when there is nothing more to report.

    - `JsonElement Type = "refusal"`

    - `required Category? Category`

      The policy category that triggered the refusal, or `null` when there is no named category. New values can be added over time.

      - `Cyber("cyber")`

      - `Bio("bio")`

      - `FrontierLlm("frontier_llm")`

      - `ReasoningExtraction("reasoning_extraction")`

      - `GeneralHarms("general_harms")`

    - `required string? Explanation`

      Human-readable explanation of the refusal, or `null` when none is available. The wording can change, so do not parse it.

  - `required StopReason StopReason`

    - `class BetaManagedAgentsSessionEndTurn`

      The agent completed its turn naturally and is ready for the next user message.

      - `JsonElement Type = "end_turn"`

    - `class BetaManagedAgentsSessionRequiresAction`

      The agent is idle waiting on one or more blocking user-input events (tool confirmation, custom tool result, etc.). Resolving all of them transitions the session back to running.

      - `JsonElement Type = "requires_action"`

      - `required IReadOnlyList<string> EventIds`

        The ids of events the agent is blocked on. Resolving fewer than all re-emits `session.status_idle` with the remainder.

    - `class BetaManagedAgentsSessionRetriesExhausted`

      The turn ended because repeated errors exhausted the retry budget or an error escalated to `retry_status: 'exhausted'`.

      - `JsonElement Type = "retries_exhausted"`

    - `class BetaManagedAgentsSessionBudgetReached`

      The agent stopped because the session's tracked list cost reached its budget, or because its usage includes a model with no list price (which the budget cannot measure). Raise the budget to continue — or, if raising is rejected because a model has no list price, remove the budget.

      - `JsonElement Type = "budget_reached"`

    - `class BetaManagedAgentsSessionRefusal`

      The turn ended because the model's response was refused, for example by a safety classifier.

      - `JsonElement Type = "refusal"`

### Beta Managed Agents Session Thread Status Rescheduled Event

- `class BetaManagedAgentsSessionThreadStatusRescheduledEvent`

  A session thread hit a transient error and is retrying automatically. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.

  - `JsonElement Type = "session.thread_status_rescheduled"`

  - `required string ID`

    Unique identifier for this event.

  - `required string AgentName`

    Name of the agent the thread runs.

  - `required DateTimeOffset ProcessedAt`

    Timestamp of the status transition.

    format: date-time

  - `required string SessionThreadID`

    Public sthr_ ID of the thread that is retrying.

### Beta Managed Agents Session Thread Status Running Event

- `class BetaManagedAgentsSessionThreadStatusRunningEvent`

  A session thread has begun executing. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.

  - `JsonElement Type = "session.thread_status_running"`

  - `required string ID`

    Unique identifier for this event.

  - `required string AgentName`

    Name of the agent the thread runs.

  - `required DateTimeOffset ProcessedAt`

    Timestamp of the status transition.

    format: date-time

  - `required string SessionThreadID`

    Public sthr_ ID of the thread that started running.

### Beta Managed Agents Session Thread Status Terminated Event

- `class BetaManagedAgentsSessionThreadStatusTerminatedEvent`

  A session thread has terminated and will accept no further input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.

  - `JsonElement Type = "session.thread_status_terminated"`

  - `required string ID`

    Unique identifier for this event.

  - `required string AgentName`

    Name of the agent the thread runs.

  - `required DateTimeOffset ProcessedAt`

    Timestamp of the status transition.

    format: date-time

  - `required string SessionThreadID`

    Public sthr_ ID of the thread that terminated.

### Beta Managed Agents Session Usage Snapshot

- `class BetaManagedAgentsSessionUsageSnapshot`

  Point-in-time snapshot of a session's cumulative usage.

  - `double ActiveSeconds`

    Cumulative time in seconds during which the session had at least one thread in running status. Overlapping activity from concurrent threads is counted once. This is the duration the session's runtime cost is priced on.

    format: double

  - `BetaManagedAgentsCacheCreationUsage CacheCreation`

    Tokens used to create prompt cache entries, broken down by cache TTL.

    - `int Ephemeral1hInputTokens`

      Tokens used to create 1-hour ephemeral cache entries.

      format: int32

    - `int Ephemeral5mInputTokens`

      Tokens used to create 5-minute ephemeral cache entries.

      format: int32

  - `int CacheReadInputTokens`

    Total tokens read from prompt cache.

    format: int32

  - `int InputTokens`

    Total input tokens consumed across all turns.

    format: int32

  - `BetaMonetaryAmount ListCost`

    Cumulative list cost of the session across all turns, priced at public list rates.

    - `required string Amount`

      Amount in minor units of the currency, as an integer decimal string with no leading zeros: "2500" is $25.00 and "50" is fifty cents. A string rather than a number so no float rounding is ever applied.

      pattern: ^(0|[1-9]\d*)$

    - `required BetaCurrency Currency`

      Uppercase ISO-4217 currency code. `USD` is the only currency currently supported; the accepted set is closed and grows only when a new currency is priced.

  - `int OutputTokens`

    Total output tokens generated across all turns.

    format: int32

  - `BetaManagedAgentsServerToolUsage ServerToolUse`

    Cumulative server-executed tool usage across all turns.

    - `int WebFetchRequests`

      Number of server-executed web fetch requests.

      format: int32

    - `int WebSearchRequests`

      Number of server-executed web search requests.

      format: int32

### Beta Managed Agents Span Model Request End Event

- `class BetaManagedAgentsSpanModelRequestEndEvent`

  Emitted when a model request completes.

  - `JsonElement Type = "span.model_request_end"`

  - `required string ID`

    Unique identifier for this event.

  - `required bool? IsError`

    Whether the model request resulted in an error.

  - `required string ModelRequestStartID`

    The id of the corresponding `span.model_request_start` event.

  - `required BetaManagedAgentsSpanModelUsage ModelUsage`

    Token usage for this model request.

    - `required int CacheCreationInputTokens`

      Tokens used to create prompt cache in this request.

      format: int32

    - `required int CacheReadInputTokens`

      Tokens read from prompt cache in this request.

      format: int32

    - `required int InputTokens`

      Input tokens consumed by this request.

      format: int32

    - `required int OutputTokens`

      Output tokens generated by this request.

      format: int32

    - `Speed? Speed`

      Inference speed tier this request actually ran at. Mirrors `usage.speed` on /v1/messages. Only present when the fast-mode beta is active.

      - `Standard("standard")`

      - `Fast("fast")`

  - `required DateTimeOffset ProcessedAt`

    Timestamp when the model request completed.

    format: date-time

### Beta Managed Agents Span Model Request Start Event

- `class BetaManagedAgentsSpanModelRequestStartEvent`

  Emitted when a model request is initiated by the agent.

  - `JsonElement Type = "span.model_request_start"`

  - `required string ID`

    Unique identifier for this event.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when the model request started.

    format: date-time

### Beta Managed Agents Span Model Usage

- `class BetaManagedAgentsSpanModelUsage`

  Token usage for a single model request.

  - `required int CacheCreationInputTokens`

    Tokens used to create prompt cache in this request.

    format: int32

  - `required int CacheReadInputTokens`

    Tokens read from prompt cache in this request.

    format: int32

  - `required int InputTokens`

    Input tokens consumed by this request.

    format: int32

  - `required int OutputTokens`

    Output tokens generated by this request.

    format: int32

  - `Speed? Speed`

    Inference speed tier this request actually ran at. Mirrors `usage.speed` on /v1/messages. Only present when the fast-mode beta is active.

    - `Standard("standard")`

    - `Fast("fast")`

### Beta Managed Agents Span Outcome Evaluation End Event

- `class BetaManagedAgentsSpanOutcomeEvaluationEndEvent`

  Emitted when an outcome evaluation cycle completes. Carries the verdict and aggregate token usage. A verdict of `needs_revision` means another evaluation cycle follows; `satisfied`, `max_iterations_reached`, `failed`, or `interrupted` are terminal — no further evaluation cycles follow.

  - `JsonElement Type = "span.outcome_evaluation_end"`

  - `required string ID`

    Unique identifier for this event.

  - `required string Explanation`

    Human-readable explanation of the verdict. For `needs_revision`, describes which criteria failed and why.

  - `required int Iteration`

    0-indexed revision cycle, matching the corresponding `span.outcome_evaluation_start`.

    format: int32

  - `required string OutcomeEvaluationStartID`

    The id of the corresponding `span.outcome_evaluation_start` event.

  - `required string OutcomeID`

    The `outc_` ID of the outcome being evaluated.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when outcome evaluation ended.

    format: date-time

  - `required string Result`

    Evaluation verdict. 'satisfied': criteria met, session goes idle. 'needs_revision': criteria not met, another revision cycle follows. 'max_iterations_reached': evaluation budget exhausted with criteria still unmet — one final acknowledgment turn follows before the session goes idle, but no further evaluation runs. 'failed': grader determined the rubric does not apply to the deliverables. 'interrupted': user sent an interrupt while evaluation was in progress.

  - `required BetaManagedAgentsSpanModelUsage Usage`

    Aggregate token usage for this evaluation cycle. Sums across all grader model requests within the cycle.

    - `required int CacheCreationInputTokens`

      Tokens used to create prompt cache in this request.

      format: int32

    - `required int CacheReadInputTokens`

      Tokens read from prompt cache in this request.

      format: int32

    - `required int InputTokens`

      Input tokens consumed by this request.

      format: int32

    - `required int OutputTokens`

      Output tokens generated by this request.

      format: int32

    - `Speed? Speed`

      Inference speed tier this request actually ran at. Mirrors `usage.speed` on /v1/messages. Only present when the fast-mode beta is active.

      - `Standard("standard")`

      - `Fast("fast")`

### Beta Managed Agents Span Outcome Evaluation Ongoing Event

- `class BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent`

  Periodic heartbeat emitted while an outcome evaluation cycle is in progress. Distinguishes 'evaluation is actively running' from 'evaluation is stuck' between the corresponding `span.outcome_evaluation_start` and `span.outcome_evaluation_end` events.

  - `JsonElement Type = "span.outcome_evaluation_ongoing"`

  - `required string ID`

    Unique identifier for this event.

  - `required int Iteration`

    0-indexed revision cycle, matching the corresponding `span.outcome_evaluation_start`.

    format: int32

  - `required string OutcomeID`

    The `outc_` ID of the outcome being evaluated.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when this heartbeat was emitted.

    format: date-time

### Beta Managed Agents Span Outcome Evaluation Start Event

- `class BetaManagedAgentsSpanOutcomeEvaluationStartEvent`

  Emitted when an outcome evaluation cycle begins.

  - `JsonElement Type = "span.outcome_evaluation_start"`

  - `required string ID`

    Unique identifier for this event.

  - `required int Iteration`

    0-indexed revision cycle. 0 is the first evaluation; 1 is the re-evaluation after the first revision; etc.

    format: int32

  - `required string OutcomeID`

    The `outc_` ID of the outcome being evaluated.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when outcome evaluation started.

    format: date-time

### Beta Managed Agents Stream Session Events

- `class BetaManagedAgentsStreamSessionEvents: union`

  Server-sent event in the session stream.

  - `class BetaManagedAgentsUserMessageEvent`

    A user message event in the session conversation.

    - `JsonElement Type = "user.message"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyList<Content> Content`

      Array of content blocks comprising the user message.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

        - `JsonElement Type = "text"`

        - `required string Text`

          The text content.

          minLength: 1

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

        - `JsonElement Type = "image"`

        - `required Source Source`

          The source of the image data.

          - `class BetaManagedAgentsBase64ImageSource`

            Base64-encoded image data.

            - `JsonElement Type = "base64"`

            - `required string Data`

              Base64-encoded image data.

              minLength: 1

            - `required string MediaType`

              MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif", "image/webp").

              minLength: 1

          - `class BetaManagedAgentsUrlImageSource`

            Image referenced by URL.

            - `JsonElement Type = "url"`

            - `required string Url`

              URL of the image to fetch.

              minLength: 1

          - `class BetaManagedAgentsFileImageSource`

            Image referenced by file ID.

            - `JsonElement Type = "file"`

            - `required string FileID`

              ID of a previously uploaded file.

              minLength: 1

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

        - `JsonElement Type = "document"`

        - `required Source Source`

          The source of the document data.

          - `class BetaManagedAgentsBase64DocumentSource`

            Base64-encoded document data.

            - `JsonElement Type = "base64"`

            - `required string Data`

              Base64-encoded document data.

              minLength: 1

            - `required string MediaType`

              MIME type of the document (e.g., "application/pdf").

              minLength: 1

          - `class BetaManagedAgentsPlainTextDocumentSource`

            Plain text document content.

            - `JsonElement Type = "text"`

            - `required string Data`

              The plain text content.

              minLength: 1

            - `JsonElement MediaType = "text/plain"`

              MIME type of the text content. Must be "text/plain".

          - `class BetaManagedAgentsUrlDocumentSource`

            Document referenced by URL.

            - `JsonElement Type = "url"`

            - `required string Url`

              URL of the document to fetch.

              minLength: 1

          - `class BetaManagedAgentsFileDocumentSource`

            Document referenced by file ID.

            - `JsonElement Type = "file"`

            - `required string FileID`

              ID of a previously uploaded file.

              minLength: 1

        - `string? Context`

          Additional context about the document for the model.

        - `string? Title`

          The title of the document.

      - `class BetaManagedAgentsRedactedBlock`

        Placeholder for content withheld by Anthropic model policy.

        - `JsonElement Type = "redacted"`

    - `DateTimeOffset? ProcessedAt`

      Timestamp when the agent finished processing this message.

      format: date-time

  - `class BetaManagedAgentsUserInterruptEvent`

    An interrupt event that pauses agent execution and returns control to the user.

    - `JsonElement Type = "user.interrupt"`

    - `required string ID`

      Unique identifier for this event.

    - `DateTimeOffset? ProcessedAt`

      Timestamp when the interrupt was processed.

      format: date-time

    - `string? SessionThreadID`

      If absent, interrupts every non-archived thread in a multiagent session (or the primary alone in a single-agent session). If present, interrupts only the named thread.

  - `class BetaManagedAgentsUserToolConfirmationEvent`

    A tool confirmation event that approves or denies a pending tool execution.

    - `JsonElement Type = "user.tool_confirmation"`

    - `required string ID`

      Unique identifier for this event.

    - `required Result Result`

      The confirmation result: 'allow' or 'deny'.

      - `Allow("allow")`

      - `Deny("deny")`

    - `required string ToolUseID`

      The id of the `agent.tool_use` or `agent.mcp_tool_use` event this result corresponds to, which can be found in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

    - `string? DenyMessage`

      Optional message providing context for a 'deny' decision. Only allowed when result is 'deny'.

      maxLength: 10000

    - `DateTimeOffset? ProcessedAt`

      Timestamp when the confirmation was processed.

      format: date-time

    - `string? SessionThreadID`

      Set by the server to the subagent thread this confirmation was routed to. Omitted when it was routed to the primary thread.

  - `class BetaManagedAgentsUserCustomToolResultEvent`

    Event sent by the client providing the result of a custom tool execution.

    - `JsonElement Type = "user.custom_tool_result"`

    - `required string ID`

      Unique identifier for this event.

    - `required string CustomToolUseID`

      The id of the `agent.custom_tool_use` event this result corresponds to. It is also listed in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

    - `IReadOnlyList<Content> Content`

      The result content returned by the tool.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsSearchResultBlock`

        A block containing a web search result.

        - `JsonElement Type = "search_result"`

        - `required BetaManagedAgentsSearchResultCitations Citations`

          Citation settings for this search result.

          - `required bool Enabled`

            Whether citations are enabled for this search result.

        - `required IReadOnlyList<BetaManagedAgentsSearchResultContent> Content`

          Array of text content blocks from the search result.

          - `JsonElement Type = "text"`

          - `required string Text`

            The text content.

            minLength: 1

        - `required string Source`

          The URL source of the search result.

          minLength: 1

        - `required string Title`

          The title of the search result.

          minLength: 1

    - `bool? IsError`

      Whether the tool execution resulted in an error.

    - `DateTimeOffset? ProcessedAt`

      Timestamp when this result was processed.

      format: date-time

    - `string? SessionThreadID`

      Set by the server to the subagent thread this result was routed to. Omitted when it was routed to the primary thread.

  - `class BetaManagedAgentsAgentCustomToolUseEvent`

    Event emitted when the agent calls a custom tool. The session goes idle until the client sends a `user.custom_tool_result` event with the result. The client can send it as soon as this event arrives, without waiting for `session.status_idle`.

    - `JsonElement Type = "agent.custom_tool_use"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyDictionary<string, JsonElement> Input`

      Input parameters for the tool call.

    - `required string Name`

      Name of the custom tool being called.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this tool use was processed.

      format: date-time

    - `string? SessionThreadID`

      When set, this event was cross-posted from a subagent's thread to surface its custom tool use on the primary thread's stream. Empty on the thread's own events. Informational only: the server routes the matching `user.custom_tool_result` by `custom_tool_use_id`, so clients do not send it back.

  - `class BetaManagedAgentsAgentMessageEvent`

    An agent response event in the session conversation.

    - `JsonElement Type = "agent.message"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyList<Content> Content`

      Array of text blocks comprising the agent response.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsRedactedBlock`

        Placeholder for content withheld by Anthropic model policy.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this response was generated.

      format: date-time

  - `class BetaManagedAgentsAgentThinkingEvent`

    Indicates the agent is making forward progress via extended thinking. A progress signal, not a content carrier.

    - `JsonElement Type = "agent.thinking"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this thinking was produced.

      format: date-time

  - `class BetaManagedAgentsAgentMcpToolUseEvent`

    Event emitted when the agent invokes a tool provided by an MCP server.

    - `JsonElement Type = "agent.mcp_tool_use"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyDictionary<string, JsonElement> Input`

      Input parameters for the tool call.

    - `required string McpServerName`

      Name of the MCP server providing the tool.

    - `required string Name`

      Name of the MCP tool being used.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `BetaManagedAgentsAgentEvaluatedPermission EvaluatedPermission`

      The evaluated permission policy for this tool invocation.

      - `Allow("allow")`

      - `Ask("ask")`

      - `Deny("deny")`

    - `BetaManagedAgentsAgentToolEvaluation Evaluation`

      Which resolved permission_policy produced evaluated_permission: always_allow, always_ask, or auto (with the server's per-invocation judgement). Absent only when the server refused the call before any policy applied (for example, the named tool is not enabled in the session); such a refusal has evaluated_permission deny. An event recorded before this field existed reads as the arm its evaluated_permission implies (always_allow for allow, always_ask for ask).

      - `class BetaManagedAgentsAgentToolEvaluationAlwaysAllow`

        The resolved permission_policy was always_allow; accompanies evaluated_permission "allow".

        - `JsonElement Type = "always_allow"`

      - `class BetaManagedAgentsAgentToolEvaluationAlwaysAsk`

        The resolved permission_policy was always_ask; accompanies evaluated_permission "ask".

        - `JsonElement Type = "always_ask"`

      - `class BetaManagedAgentsAgentToolEvaluationAuto`

        The resolved permission_policy was auto: the server judged this invocation individually.

        - `JsonElement Type = "auto"`

        - `required BetaManagedAgentsAgentAutoEvaluatedPermission EvaluatedPermission`

          The server's judgement for this invocation.

          - `class BetaManagedAgentsAgentAutoEvaluatedPermissionAllow`

            The server judged the invocation safe to execute without client approval.

            - `JsonElement Type = "allow"`

          - `class BetaManagedAgentsAgentAutoEvaluatedPermissionAsk`

            The server reached no judgement; the invocation is held for client approval.

            - `JsonElement Type = "ask"`

            - `required string ReasonCode`

              The judgement's grounds in registry-bound terms, for client branching and audit rather than end-user display. Open registry; currently "indeterminate" (no judgement was reached). Clients must tolerate values outside this set.

              maxLength: 64

          - `class BetaManagedAgentsAgentAutoEvaluatedPermissionDeny`

            The server judged the invocation high-risk; it does not execute and a synthetic error tool result is appended.

            - `JsonElement Type = "deny"`

            - `required string ReasonCode`

              The judgement's grounds in registry-bound terms. Open registry; currently "high_risk" (judged high-risk; the call does not run). Clients must tolerate values outside this set.

              maxLength: 64

    - `string? SessionThreadID`

      When set, this event was cross-posted from a subagent's thread to surface its permission request on the primary thread's stream. Empty on the thread's own events. Informational only: the server routes the matching `user.tool_confirmation` by `tool_use_id`, so clients do not send it back.

  - `class BetaManagedAgentsAgentMcpToolResultEvent`

    Event representing the result of an MCP tool execution.

    - `JsonElement Type = "agent.mcp_tool_result"`

    - `required string ID`

      Unique identifier for this event.

    - `required string McpToolUseID`

      The id of the `agent.mcp_tool_use` event this result corresponds to.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `IReadOnlyList<Content> Content`

      The result content returned by the tool.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsSearchResultBlock`

        A block containing a web search result.

    - `bool? IsError`

      Whether the tool execution resulted in an error.

  - `class BetaManagedAgentsAgentToolUseEvent`

    Event emitted when the agent invokes a built-in agent tool.

    - `JsonElement Type = "agent.tool_use"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyDictionary<string, JsonElement> Input`

      Input parameters for the tool call.

    - `required string Name`

      Name of the agent tool being used.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `BetaManagedAgentsAgentEvaluatedPermission EvaluatedPermission`

      The evaluated permission policy for this tool invocation.

    - `BetaManagedAgentsAgentToolEvaluation Evaluation`

      Which resolved permission_policy produced evaluated_permission: always_allow, always_ask, or auto (with the server's per-invocation judgement). Absent only when the server refused the call before any policy applied (for example, the named tool is not enabled in the session); such a refusal has evaluated_permission deny. An event recorded before this field existed reads as the arm its evaluated_permission implies (always_allow for allow, always_ask for ask).

    - `string? SessionThreadID`

      When set, this event was cross-posted from a subagent's thread to surface its permission request on the primary thread's stream. Empty on the thread's own events. Informational only: the server routes the matching `user.tool_confirmation` or `user.tool_result` by `tool_use_id`, so clients do not send it back.

  - `class BetaManagedAgentsAgentToolResultEvent`

    Event representing the result of an agent tool execution.

    - `JsonElement Type = "agent.tool_result"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string ToolUseID`

      The id of the `agent.tool_use` event this result corresponds to.

    - `IReadOnlyList<Content> Content`

      The result content returned by the tool.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsSearchResultBlock`

        A block containing a web search result.

    - `bool? IsError`

      Whether the tool execution resulted in an error.

  - `class BetaManagedAgentsAgentThreadMessageReceivedEvent`

    Delivery event written to the target thread's input stream when an agent-to-agent message arrives.

    - `JsonElement Type = "agent.thread_message_received"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyList<Content> Content`

      Message content blocks.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsRedactedBlock`

        Placeholder for content withheld by Anthropic model policy.

    - `required string FromSessionThreadID`

      Public `sthr_` ID of the thread that sent the message.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the message was received.

      format: date-time

    - `string? FromAgentName`

      Name of the callable agent this message came from. Absent when received from the primary agent.

  - `class BetaManagedAgentsAgentThreadMessageSentEvent`

    Observability event emitted to the sender's output stream when an agent-to-agent message is sent.

    - `JsonElement Type = "agent.thread_message_sent"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyList<Content> Content`

      Message content blocks.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsRedactedBlock`

        Placeholder for content withheld by Anthropic model policy.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the message was sent.

      format: date-time

    - `required string ToSessionThreadID`

      Public `sthr_` ID of the thread the message was sent to.

    - `string? ToAgentName`

      Name of the callable agent this message was sent to. Absent when sent to the primary agent.

  - `class BetaManagedAgentsAgentThreadContextCompactedEvent`

    Indicates that context compaction (summarization) occurred during the session.

    - `JsonElement Type = "agent.thread_context_compacted"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when compaction was processed.

      format: date-time

  - `class BetaManagedAgentsSessionErrorEvent`

    An error event indicating a problem occurred during session execution.

    - `JsonElement Type = "session.error"`

    - `required string ID`

      Unique identifier for this event.

    - `required Error Error`

      - `class BetaManagedAgentsUnknownError`

        An unknown or unexpected error occurred during session execution. A fallback variant; clients that don't recognize a new error code can match on `retry_status` and `message` alone.

        - `JsonElement Type = "unknown_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

            - `JsonElement Type = "retrying"`

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

            - `JsonElement Type = "exhausted"`

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

            - `JsonElement Type = "terminal"`

      - `class BetaManagedAgentsModelOverloadedError`

        The model is currently overloaded. Emitted after automatic retries are exhausted.

        - `JsonElement Type = "model_overloaded_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsModelRateLimitedError`

        The model request was rate-limited.

        - `JsonElement Type = "model_rate_limited_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsModelRequestFailedError`

        A model request failed for a reason other than overload or rate-limiting.

        - `JsonElement Type = "model_request_failed_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsMcpConnectionFailedError`

        Failed to connect to an MCP server.

        - `JsonElement Type = "mcp_connection_failed_error"`

        - `required string McpServerName`

          Name of the MCP server that failed to connect.

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsMcpAuthenticationFailedError`

        Authentication to an MCP server failed.

        - `JsonElement Type = "mcp_authentication_failed_error"`

        - `required string McpServerName`

          Name of the MCP server that failed authentication.

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsBillingError`

        The caller's organization or workspace cannot make model requests — out of credits or spend limit reached. Retrying with the same credentials will not succeed; the caller must resolve the billing state.

        - `JsonElement Type = "billing_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsCredentialHostUnreachableError`

        An `environment_variable` credential's `auth.networking.allowed_hosts` includes a host the environment's network policy does not permit.

        - `JsonElement Type = "credential_host_unreachable_error"`

        - `required string CredentialID`

          ID of the affected credential.

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

        - `required string VaultID`

          ID of the vault containing the affected credential.

      - `class BetaManagedAgentsToolUseLimitReachedError`

        The turn stopped because the agent loop reached its limit on tool-use rounds (one model response that calls tools, plus running those tools, is one round), not because a request failed. The thread goes idle with `stop_reason: retries_exhausted` (a child thread then terminates); the next `user.message` starts a new turn.

        - `JsonElement Type = "tool_use_limit_reached_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsCompactionLimitReachedError`

        The turn stopped because the context was compacted the maximum number of times in a row without the model producing a message or a tool call, not because a request failed. The thread goes idle with `stop_reason: retries_exhausted` (a child thread then terminates); the next `user.message` starts a new turn.

        - `JsonElement Type = "compaction_limit_reached_error"`

        - `required string Message`

          Human-readable error description.

        - `required RetryStatus RetryStatus`

          What the client should do next.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsRepositoryAuthenticationError`

        The repository host rejected the credentials, or required credentials and received none.

        - `JsonElement Type = "repository_authentication_error"`

        - `required string Message`

          Human-readable error description.

        - `required string? RepositoryUrl`

          URL of the repository that could not be cloned. Null when it could not be identified.

        - `required RetryStatus RetryStatus`

          What the client should do next. Always `retrying`: the session keeps running without the repository.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsRepositoryForbiddenError`

        The repository host refused access to the repository.

        - `JsonElement Type = "repository_forbidden_error"`

        - `required string Message`

          Human-readable error description.

        - `required string? RepositoryUrl`

          URL of the repository that could not be cloned. Null when it could not be identified.

        - `required RetryStatus RetryStatus`

          What the client should do next. Always `retrying`: the session keeps running without the repository.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsRepositoryNotFoundError`

        The repository host reported the repository as not found.

        - `JsonElement Type = "repository_not_found_error"`

        - `required string Message`

          Human-readable error description.

        - `required string? RepositoryUrl`

          URL of the repository that could not be cloned. Null when it could not be identified.

        - `required RetryStatus RetryStatus`

          What the client should do next. Always `retrying`: the session keeps running without the repository.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsRepositoryCheckoutError`

        The requested branch or commit does not exist in the repository.

        - `JsonElement Type = "repository_checkout_error"`

        - `required string Message`

          Human-readable error description.

        - `required string? RepositoryUrl`

          URL of the repository that could not be cloned. Null when it could not be identified.

        - `required RetryStatus RetryStatus`

          What the client should do next. Always `retrying`: the session keeps running without the repository.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

      - `class BetaManagedAgentsRepositoryCloneError`

        The repository could not be cloned.

        - `JsonElement Type = "repository_clone_error"`

        - `required string Message`

          Human-readable error description.

        - `required string? RepositoryUrl`

          URL of the repository that could not be cloned. Null when it could not be identified.

        - `required RetryStatus RetryStatus`

          What the client should do next. Always `retrying`: the session keeps running without the repository.

          - `class BetaManagedAgentsRetryStatusRetrying`

            The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

          - `class BetaManagedAgentsRetryStatusExhausted`

            This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

          - `class BetaManagedAgentsRetryStatusTerminal`

            The session encountered a terminal error and will transition to `terminated` state.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the error occurred.

      format: date-time

  - `class BetaManagedAgentsSessionStatusRescheduledEvent`

    Indicates the session is recovering from an error state and is rescheduled for execution.

    - `JsonElement Type = "session.status_rescheduled"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of status change.

      format: date-time

  - `class BetaManagedAgentsSessionStatusRunningEvent`

    Indicates the session is actively running and the agent is working.

    - `JsonElement Type = "session.status_running"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of status change.

      format: date-time

  - `class BetaManagedAgentsSessionStatusIdleEvent`

    Indicates the agent has paused and is awaiting user input.

    - `JsonElement Type = "session.status_idle"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of status change.

      format: date-time

    - `required BetaManagedAgentsSessionRefusalStopDetails? StopDetails`

      Structured information about why the session stopped. `null` when there is nothing more to report.

      - `JsonElement Type = "refusal"`

      - `required Category? Category`

        The policy category that triggered the refusal, or `null` when there is no named category. New values can be added over time.

        - `Cyber("cyber")`

        - `Bio("bio")`

        - `FrontierLlm("frontier_llm")`

        - `ReasoningExtraction("reasoning_extraction")`

        - `GeneralHarms("general_harms")`

      - `required string? Explanation`

        Human-readable explanation of the refusal, or `null` when none is available. The wording can change, so do not parse it.

    - `required StopReason StopReason`

      - `class BetaManagedAgentsSessionEndTurn`

        The agent completed its turn naturally and is ready for the next user message.

        - `JsonElement Type = "end_turn"`

      - `class BetaManagedAgentsSessionRequiresAction`

        The agent is idle waiting on one or more blocking user-input events (tool confirmation, custom tool result, etc.). Resolving all of them transitions the session back to running.

        - `JsonElement Type = "requires_action"`

        - `required IReadOnlyList<string> EventIds`

          The ids of events the agent is blocked on. Resolving fewer than all re-emits `session.status_idle` with the remainder.

      - `class BetaManagedAgentsSessionRetriesExhausted`

        The turn ended because repeated errors exhausted the retry budget or an error escalated to `retry_status: 'exhausted'`.

        - `JsonElement Type = "retries_exhausted"`

      - `class BetaManagedAgentsSessionBudgetReached`

        The agent stopped because the session's tracked list cost reached its budget, or because its usage includes a model with no list price (which the budget cannot measure). Raise the budget to continue — or, if raising is rejected because a model has no list price, remove the budget.

        - `JsonElement Type = "budget_reached"`

      - `class BetaManagedAgentsSessionRefusal`

        The turn ended because the model's response was refused, for example by a safety classifier.

        - `JsonElement Type = "refusal"`

  - `class BetaManagedAgentsSessionStatusTerminatedEvent`

    Indicates the session has terminated, either due to an error or completion.

    - `JsonElement Type = "session.status_terminated"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of status change.

      format: date-time

  - `class BetaManagedAgentsSessionThreadCreatedEvent`

    Emitted when a child thread is created. Written to the parent thread's output stream so clients observing the session see child creation.

    - `JsonElement Type = "session.thread_created"`

    - `required string ID`

      Unique identifier for this event.

    - `required string AgentName`

      Name of the callable agent the thread runs.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the thread was created.

      format: date-time

    - `required string SessionThreadID`

      Public `sthr_` ID of the newly created thread.

    - `required string? WorkflowRunID`

      Identifier of the workflow run that created the thread, or `null` for any other thread.

  - `class BetaManagedAgentsSpanOutcomeEvaluationStartEvent`

    Emitted when an outcome evaluation cycle begins.

    - `JsonElement Type = "span.outcome_evaluation_start"`

    - `required string ID`

      Unique identifier for this event.

    - `required int Iteration`

      0-indexed revision cycle. 0 is the first evaluation; 1 is the re-evaluation after the first revision; etc.

      format: int32

    - `required string OutcomeID`

      The `outc_` ID of the outcome being evaluated.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when outcome evaluation started.

      format: date-time

  - `class BetaManagedAgentsSpanOutcomeEvaluationEndEvent`

    Emitted when an outcome evaluation cycle completes. Carries the verdict and aggregate token usage. A verdict of `needs_revision` means another evaluation cycle follows; `satisfied`, `max_iterations_reached`, `failed`, or `interrupted` are terminal — no further evaluation cycles follow.

    - `JsonElement Type = "span.outcome_evaluation_end"`

    - `required string ID`

      Unique identifier for this event.

    - `required string Explanation`

      Human-readable explanation of the verdict. For `needs_revision`, describes which criteria failed and why.

    - `required int Iteration`

      0-indexed revision cycle, matching the corresponding `span.outcome_evaluation_start`.

      format: int32

    - `required string OutcomeEvaluationStartID`

      The id of the corresponding `span.outcome_evaluation_start` event.

    - `required string OutcomeID`

      The `outc_` ID of the outcome being evaluated.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when outcome evaluation ended.

      format: date-time

    - `required string Result`

      Evaluation verdict. 'satisfied': criteria met, session goes idle. 'needs_revision': criteria not met, another revision cycle follows. 'max_iterations_reached': evaluation budget exhausted with criteria still unmet — one final acknowledgment turn follows before the session goes idle, but no further evaluation runs. 'failed': grader determined the rubric does not apply to the deliverables. 'interrupted': user sent an interrupt while evaluation was in progress.

    - `required BetaManagedAgentsSpanModelUsage Usage`

      Aggregate token usage for this evaluation cycle. Sums across all grader model requests within the cycle.

      - `required int CacheCreationInputTokens`

        Tokens used to create prompt cache in this request.

        format: int32

      - `required int CacheReadInputTokens`

        Tokens read from prompt cache in this request.

        format: int32

      - `required int InputTokens`

        Input tokens consumed by this request.

        format: int32

      - `required int OutputTokens`

        Output tokens generated by this request.

        format: int32

      - `Speed? Speed`

        Inference speed tier this request actually ran at. Mirrors `usage.speed` on /v1/messages. Only present when the fast-mode beta is active.

        - `Standard("standard")`

        - `Fast("fast")`

  - `class BetaManagedAgentsSpanModelRequestStartEvent`

    Emitted when a model request is initiated by the agent.

    - `JsonElement Type = "span.model_request_start"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the model request started.

      format: date-time

  - `class BetaManagedAgentsSpanModelRequestEndEvent`

    Emitted when a model request completes.

    - `JsonElement Type = "span.model_request_end"`

    - `required string ID`

      Unique identifier for this event.

    - `required bool? IsError`

      Whether the model request resulted in an error.

    - `required string ModelRequestStartID`

      The id of the corresponding `span.model_request_start` event.

    - `required BetaManagedAgentsSpanModelUsage ModelUsage`

      Token usage for this model request.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the model request completed.

      format: date-time

  - `class BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent`

    Periodic heartbeat emitted while an outcome evaluation cycle is in progress. Distinguishes 'evaluation is actively running' from 'evaluation is stuck' between the corresponding `span.outcome_evaluation_start` and `span.outcome_evaluation_end` events.

    - `JsonElement Type = "span.outcome_evaluation_ongoing"`

    - `required string ID`

      Unique identifier for this event.

    - `required int Iteration`

      0-indexed revision cycle, matching the corresponding `span.outcome_evaluation_start`.

      format: int32

    - `required string OutcomeID`

      The `outc_` ID of the outcome being evaluated.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this heartbeat was emitted.

      format: date-time

  - `class BetaManagedAgentsUserDefineOutcomeEvent`

    Echo of a `user.define_outcome` input event. Carries the server-generated `outcome_id` that subsequent `span.outcome_evaluation_*` events reference.

    - `JsonElement Type = "user.define_outcome"`

    - `required string ID`

      Unique identifier for this event.

    - `required string Description`

      What the agent should produce. Copied from the input event.

    - `required int? MaxIterations`

      Evaluate-then-revise cycles before giving up. Default 3, max 20.

      format: int32

    - `required string OutcomeID`

      Server-generated `outc_` ID for this outcome. Referenced by `span.outcome_evaluation_*` events and the session's `outcome_evaluations` list.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the outcome was accepted.

      format: date-time

    - `required Rubric Rubric`

      How to grade the outcome. File rubrics are currently resolved to their text content; clients should handle both variants.

      - `class BetaManagedAgentsFileRubric`

        Rubric referenced by a file uploaded via the Files API.

        - `JsonElement Type = "file"`

        - `required string FileID`

          ID of the rubric file.

      - `class BetaManagedAgentsTextRubric`

        Rubric content provided inline as text.

        - `JsonElement Type = "text"`

        - `required string Content`

          Rubric content. Plain text or markdown — the grader treats it as freeform text.

  - `class BetaManagedAgentsSessionDeletedEvent`

    Emitted when a session has been deleted. Terminates any active event stream — no further events will be emitted for this session.

    - `JsonElement Type = "session.deleted"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the session was deleted.

      format: date-time

  - `class BetaManagedAgentsSessionThreadStatusRunningEvent`

    A session thread has begun executing. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.

    - `JsonElement Type = "session.thread_status_running"`

    - `required string ID`

      Unique identifier for this event.

    - `required string AgentName`

      Name of the agent the thread runs.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of the status transition.

      format: date-time

    - `required string SessionThreadID`

      Public sthr_ ID of the thread that started running.

  - `class BetaManagedAgentsSessionThreadStatusIdleEvent`

    A session thread has yielded and is awaiting input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.

    - `JsonElement Type = "session.thread_status_idle"`

    - `required string ID`

      Unique identifier for this event.

    - `required string AgentName`

      Name of the agent the thread runs.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of the status transition.

      format: date-time

    - `required string SessionThreadID`

      Public sthr_ ID of the thread that went idle.

    - `required BetaManagedAgentsSessionRefusalStopDetails? StopDetails`

      Structured information about why the thread stopped. `null` when there is nothing more to report.

    - `required StopReason StopReason`

      - `class BetaManagedAgentsSessionEndTurn`

        The agent completed its turn naturally and is ready for the next user message.

      - `class BetaManagedAgentsSessionRequiresAction`

        The agent is idle waiting on one or more blocking user-input events (tool confirmation, custom tool result, etc.). Resolving all of them transitions the session back to running.

      - `class BetaManagedAgentsSessionRetriesExhausted`

        The turn ended because repeated errors exhausted the retry budget or an error escalated to `retry_status: 'exhausted'`.

      - `class BetaManagedAgentsSessionBudgetReached`

        The agent stopped because the session's tracked list cost reached its budget, or because its usage includes a model with no list price (which the budget cannot measure). Raise the budget to continue — or, if raising is rejected because a model has no list price, remove the budget.

      - `class BetaManagedAgentsSessionRefusal`

        The turn ended because the model's response was refused, for example by a safety classifier.

  - `class BetaManagedAgentsSessionThreadStatusTerminatedEvent`

    A session thread has terminated and will accept no further input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.

    - `JsonElement Type = "session.thread_status_terminated"`

    - `required string ID`

      Unique identifier for this event.

    - `required string AgentName`

      Name of the agent the thread runs.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of the status transition.

      format: date-time

    - `required string SessionThreadID`

      Public sthr_ ID of the thread that terminated.

  - `class BetaManagedAgentsUserToolResultEvent`

    Event sent by the client providing the result of an agent-toolset tool execution. Only valid on `self_hosted` environments, where sandbox-routed tools are executed by the client rather than the server.

    - `JsonElement Type = "user.tool_result"`

    - `required string ID`

      Unique identifier for this event.

    - `required string ToolUseID`

      The id of the `agent.tool_use` event this result corresponds to, which can be found in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

    - `IReadOnlyList<Content> Content`

      The result content returned by the tool.

      - `class BetaManagedAgentsTextBlock`

        Regular text content.

      - `class BetaManagedAgentsImageBlock`

        Image content specified directly as base64 data or as a reference via a URL.

      - `class BetaManagedAgentsDocumentBlock`

        Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `class BetaManagedAgentsSearchResultBlock`

        A block containing a web search result.

    - `bool? IsError`

      Whether the tool execution resulted in an error.

    - `DateTimeOffset? ProcessedAt`

      Timestamp when this result was processed.

      format: date-time

    - `string? SessionThreadID`

      Set by the server to the subagent thread this result was routed to. Omitted when it was routed to the primary thread.

  - `class BetaManagedAgentsSessionThreadStatusRescheduledEvent`

    A session thread hit a transient error and is retrying automatically. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.

    - `JsonElement Type = "session.thread_status_rescheduled"`

    - `required string ID`

      Unique identifier for this event.

    - `required string AgentName`

      Name of the agent the thread runs.

    - `required DateTimeOffset ProcessedAt`

      Timestamp of the status transition.

      format: date-time

    - `required string SessionThreadID`

      Public sthr_ ID of the thread that is retrying.

  - `class BetaManagedAgentsSessionUpdatedEvent`

    Emitted when an UpdateSession request changed at least one field. Carries only the fields that changed; absent fields were not part of the update. The new configuration applies from the next turn.

    - `JsonElement Type = "session.updated"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the update was applied.

      format: date-time

    - `BetaManagedAgentsSessionAgent? Agent`

      The session's effective agent configuration after the update. Present only when the update changed `agent` (tools or mcp_servers); when present it is the full materialised snapshot, not a diff.

      - `JsonElement Type = "agent"`

      - `required string ID`

      - `required string? Description`

      - `required BetaManagedAgentsExecutionIdentity ExecutionIdentity`

        Execution principal snapshotted from the agent at session creation. Always present; `{"type": "service_account"}` when runs carry no customer-named principal.

        - `class BetaManagedAgentsAwsRoleExecutionIdentity`

          An AWS IAM role principal as returned in API responses.

          - `JsonElement Type = "aws_role"`

          - `required string RoleArn`

            The IAM role's ARN.

        - `class BetaManagedAgentsServiceAccountExecutionIdentity`

          The Anthropic-managed service account as returned in API responses.

          - `JsonElement Type = "service_account"`

      - `required IReadOnlyList<BetaManagedAgentsMcpServerUrlDefinition> McpServers`

        - `JsonElement Type = "url"`

        - `required string Name`

        - `required string Url`

      - `required BetaManagedAgentsModelConfig Model`

        Model identifier and configuration.

        - `required BetaManagedAgentsModel ID`

          The model that will power your agent.

          See [models](https://docs.anthropic.com/en/docs/models-overview) for additional details and options.

          - `ClaudeHaiku5_5("claude-haiku-5-5")`

            Fastest model for high-volume, real-time tasks

          - `ClaudeSonnet5_5("claude-sonnet-5-5")`

            Efficient model for coding and agents

          - `ClaudeOpus5_5("claude-opus-5-5")`

            Powerful intelligence for coding, knowledge work, and long-running agents

          - `ClaudeFable5_1("claude-fable-5-1")`

            Frontier intelligence for ambitious tasks across coding, scientific discovery, and enterprise workflows

          - `ClaudeSonnet5("claude-sonnet-5")`

            Efficient model for coding and agents

          - `ClaudeFable5("claude-fable-5")`

            Next generation of intelligence for the hardest knowledge work and coding problems

          - `ClaudeOpus5("claude-opus-5")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeOpus4_8("claude-opus-4-8")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeOpus4_7("claude-opus-4-7")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeOpus4_6("claude-opus-4-6")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeSonnet4_6("claude-sonnet-4-6")`

            Best combination of speed and intelligence

          - `ClaudeHaiku4_5("claude-haiku-4-5")`

          - `ClaudeHaiku4_5_20251001("claude-haiku-4-5-20251001")`

          - `ClaudeOpus4_5("claude-opus-4-5")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeOpus4_5_20251101("claude-opus-4-5-20251101")`

            Powerful intelligence for long-running agents and coding

          - `ClaudeSonnet4_5("claude-sonnet-4-5")`

            **Deprecated**: Will reach end-of-life on November 30, 2026. Please migrate to claude-sonnet-5-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.

            High-performance model for agents and coding

          - `ClaudeSonnet4_5_20250929("claude-sonnet-4-5-20250929")`

            **Deprecated**: Will reach end-of-life on November 30, 2026. Please migrate to claude-sonnet-5-5. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.

            High-performance model for agents and coding

        - `Effort Effort`

          How hard Claude works on each inference call. One of `low`, `medium`, `high`, `xhigh`, `max`. Always present; resolved to the per-model default at save time when not supplied.

          - `class BetaManagedAgentsEffortLow`

            Low effort. Favors latency over reasoning depth.

            - `JsonElement Type = "low"`

          - `class BetaManagedAgentsEffortMedium`

            Medium effort. Balances latency and reasoning depth.

            - `JsonElement Type = "medium"`

          - `class BetaManagedAgentsEffortHigh`

            High effort. Favors reasoning depth.

            - `JsonElement Type = "high"`

          - `class BetaManagedAgentsEffortXhigh`

            Extra-high effort. Not all models accept this level.

            - `JsonElement Type = "xhigh"`

          - `class BetaManagedAgentsEffortMax`

            Maximum effort. Favors reasoning depth over latency.

            - `JsonElement Type = "max"`

        - `string InferenceGeo`

          Geographic region for model inference. When unset, requests fall through to the workspace's default_inference_geo.

        - `Speed Speed`

          Inference speed mode. `fast` provides significantly faster output token generation at premium pricing. Defaults to `standard`. Not all models support `fast`; invalid combinations are rejected at create time.

          - `Standard("standard")`

          - `Fast("fast")`

      - `required BetaManagedAgentsSessionMultiagent? Multiagent`

        Resolved multiagent orchestration configuration. Null when the agent is single-threaded.

        - `class BetaManagedAgentsSessionMultiagentCoordinator`

          Resolved coordinator topology with full agent definitions for each roster member.

          - `JsonElement Type = "coordinator"`

          - `required IReadOnlyList<Agent> Agents`

            Full `agent` definitions the coordinator may spawn as session threads.

            - `class BetaManagedAgentsSessionThreadAgent`

              Resolved `agent` definition for a single `session_thread`. Snapshot of the agent at thread creation time. The multiagent roster is not repeated here; read it from `Session.agent`.

              - `JsonElement Type = "agent"`

              - `required string ID`

              - `required string? Description`

              - `required BetaManagedAgentsExecutionIdentity ExecutionIdentity`

                Execution principal snapshotted from the agent at session creation. Always present; `{"type": "service_account"}` when runs carry no customer-named principal.

              - `required IReadOnlyList<BetaManagedAgentsMcpServerUrlDefinition> McpServers`

                - `JsonElement Type = "url"`

                - `required string Name`

                - `required string Url`

              - `required BetaManagedAgentsModelConfig Model`

                Model identifier and configuration.

              - `required string Name`

              - `required IReadOnlyList<Skill> Skills`

                - `class BetaManagedAgentsAnthropicSkill`

                  A resolved Anthropic-managed skill.

                  - `JsonElement Type = "anthropic"`

                  - `required string SkillID`

                  - `required string Version`

                - `class BetaManagedAgentsCustomSkill`

                  A resolved user-created custom skill.

                  - `JsonElement Type = "custom"`

                  - `required string SkillID`

                  - `required string Version`

              - `required string? System`

              - `required IReadOnlyList<Tool> Tools`

                - `class BetaManagedAgentsAgentToolset20260401`

                  - `JsonElement Type = "agent_toolset_20260401"`

                  - `required IReadOnlyList<BetaManagedAgentsAgentToolConfig> Configs`

                    - `class BetaManagedAgentsBashToolConfig`

                      Configuration for the bash tool.

                      - `JsonElement Type = "bash"`

                      - `required bool Enabled`

                      - `JsonElement Name = "bash"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                          - `JsonElement Type = "always_allow"`

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                          - `JsonElement Type = "always_ask"`

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                          - `JsonElement Type = "auto"`

                    - `class BetaManagedAgentsEditToolConfig`

                      Configuration for the edit tool.

                      - `JsonElement Type = "edit"`

                      - `required bool Enabled`

                      - `JsonElement Name = "edit"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                    - `class BetaManagedAgentsReadToolConfig`

                      Configuration for the read tool.

                      - `JsonElement Type = "read"`

                      - `required bool Enabled`

                      - `JsonElement Name = "read"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                    - `class BetaManagedAgentsWriteToolConfig`

                      Configuration for the write tool.

                      - `JsonElement Type = "write"`

                      - `required bool Enabled`

                      - `JsonElement Name = "write"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                    - `class BetaManagedAgentsGlobToolConfig`

                      Configuration for the glob tool.

                      - `JsonElement Type = "glob"`

                      - `required bool Enabled`

                      - `JsonElement Name = "glob"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                    - `class BetaManagedAgentsGrepToolConfig`

                      Configuration for the grep tool.

                      - `JsonElement Type = "grep"`

                      - `required bool Enabled`

                      - `JsonElement Name = "grep"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                    - `class BetaManagedAgentsWebFetchToolConfig`

                      Configuration for the web_fetch tool.

                      - `JsonElement Type = "web_fetch"`

                      - `required bool Enabled`

                      - `JsonElement Name = "web_fetch"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                      - `required BetaManagedAgentsWebFetchUrlSources? UrlSources`

                        Which sources contribute URLs the tool may fetch, always in the object form. Null when not set, which allows every source.

                        - `required BetaManagedAgentsWebFetchUrlSourceToolFilter? ClientToolResults`

                          Which custom tools' results contribute URLs that may be fetched. Null when not set, which allows every custom tool's results.

                          - `class BetaManagedAgentsWebFetchUrlSourceAll`

                            Every URL from this source may be fetched. This is the default.

                            - `JsonElement Type = "all"`

                          - `class BetaManagedAgentsWebFetchUrlSourceNone`

                            This source contributes no URLs that may be fetched.

                            - `JsonElement Type = "none"`

                          - `class BetaManagedAgentsWebFetchUrlSourceOnly`

                            Only the named tools' results contribute URLs that may be fetched.

                            - `JsonElement Type = "only"`

                            - `required IReadOnlyList<BetaManagedAgentsWebFetchUrlSourceToolReference> Tools`

                              The tools whose results contribute. Between 1 and 128 entries, each with a different name. An empty list is rejected; use "none" to allow no tool's results.

                              - `JsonElement Type = "tool_reference"`

                                Must be "tool_reference".

                              - `required string Name`

                                Name of the tool. Compared exactly, so upper and lower case letters are different.

                                minLength: 1, maxLength: 128

                          - `class BetaManagedAgentsWebFetchUrlSourceExcept`

                            Every tool's results contribute URLs that may be fetched, except the named tools' results.

                            - `JsonElement Type = "except"`

                            - `required IReadOnlyList<BetaManagedAgentsWebFetchUrlSourceToolReference> Tools`

                              The tools whose results do not contribute. Between 1 and 128 entries, each with a different name. An empty list is rejected; use "all" to leave out no tool's results.

                              - `JsonElement Type = "tool_reference"`

                                Must be "tool_reference".

                              - `required string Name`

                                Name of the tool. Compared exactly, so upper and lower case letters are different.

                                minLength: 1, maxLength: 128

                        - `required BetaManagedAgentsWebFetchUrlSourceToolFilter? ServerToolResults`

                          Which of the web_search and web_fetch tools' results contribute URLs that may be fetched. Null when not set, which allows both.

                        - `required BetaManagedAgentsWebFetchUrlSourceUserInput? UserInput`

                          Whether URLs in the text of user messages may be fetched. Null when not set, which allows them.

                          - `class BetaManagedAgentsWebFetchUrlSourceAll`

                            Every URL from this source may be fetched. This is the default.

                          - `class BetaManagedAgentsWebFetchUrlSourceNone`

                            This source contributes no URLs that may be fetched.

                      - `IReadOnlyList<string> AllowedDomains`

                      - `IReadOnlyList<string> BlockedDomains`

                      - `int? MaxContentTokens`

                        format: int32

                    - `class BetaManagedAgentsWebSearchToolConfig`

                      Configuration for the web_search tool.

                      - `JsonElement Type = "web_search"`

                      - `required bool Enabled`

                      - `JsonElement Name = "web_search"`

                      - `required PermissionPolicy PermissionPolicy`

                        Permission policy for tool execution.

                        - `class BetaManagedAgentsAlwaysAllowPolicy`

                          Tool calls are automatically approved without user confirmation.

                        - `class BetaManagedAgentsAlwaysAskPolicy`

                          Tool calls require user confirmation before execution.

                        - `class BetaManagedAgentsAutoPolicy`

                          The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                      - `IReadOnlyList<string> AllowedDomains`

                      - `IReadOnlyList<string> BlockedDomains`

                      - `BetaManagedAgentsUserLocation? UserLocation`

                        Approximate user location for search result localization.

                        - `JsonElement Type = "approximate"`

                          Location precision. Only "approximate" is supported.

                        - `string? City`

                          City name.

                          minLength: 1, maxLength: 255

                        - `string? Country`

                          Two-letter ISO 3166-1 country code, uppercase.

                          pattern: ^[A-Z]{2}$

                        - `string? Region`

                          Region or state name.

                          minLength: 1, maxLength: 255

                        - `string? Timezone`

                          IANA timezone identifier, e.g. "America/Los_Angeles".

                          minLength: 1, maxLength: 255

                  - `required BetaManagedAgentsAgentToolsetDefaultConfig DefaultConfig`

                    Resolved default configuration for agent tools.

                    - `required bool Enabled`

                    - `required PermissionPolicy PermissionPolicy`

                      Permission policy for tool execution.

                      - `class BetaManagedAgentsAlwaysAllowPolicy`

                        Tool calls are automatically approved without user confirmation.

                      - `class BetaManagedAgentsAlwaysAskPolicy`

                        Tool calls require user confirmation before execution.

                      - `class BetaManagedAgentsAutoPolicy`

                        The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                - `class BetaManagedAgentsMcpToolset`

                  - `JsonElement Type = "mcp_toolset"`

                  - `required IReadOnlyList<BetaManagedAgentsMcpToolConfig> Configs`

                    - `required bool Enabled`

                    - `required string Name`

                    - `required PermissionPolicy PermissionPolicy`

                      Permission policy for tool execution.

                      - `class BetaManagedAgentsAlwaysAllowPolicy`

                        Tool calls are automatically approved without user confirmation.

                      - `class BetaManagedAgentsAlwaysAskPolicy`

                        Tool calls require user confirmation before execution.

                      - `class BetaManagedAgentsAutoPolicy`

                        The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                  - `required BetaManagedAgentsMcpToolsetDefaultConfig DefaultConfig`

                    Resolved default configuration for all tools from an MCP server.

                    - `required bool Enabled`

                    - `required PermissionPolicy PermissionPolicy`

                      Permission policy for tool execution.

                      - `class BetaManagedAgentsAlwaysAllowPolicy`

                        Tool calls are automatically approved without user confirmation.

                      - `class BetaManagedAgentsAlwaysAskPolicy`

                        Tool calls require user confirmation before execution.

                      - `class BetaManagedAgentsAutoPolicy`

                        The server decides each tool call individually: it judges, from the tool, its input, and the session content so far, whether the call is safe to execute or high-risk, and evaluates it to allow when judged safe and to deny when judged high-risk. A call the server cannot reach a judgement on evaluates to ask.

                  - `required string McpServerName`

                - `class BetaManagedAgentsCustomTool`

                  A custom tool as returned in API responses.

                  - `JsonElement Type = "custom"`

                  - `required string Description`

                  - `required BetaManagedAgentsCustomToolInputSchema InputSchema`

                    JSON Schema for custom tool input parameters.

                    - `JsonElement Type = "object"`

                    - `IReadOnlyDictionary<string, JsonElement>? Properties`

                    - `IReadOnlyList<string>? Required`

                  - `required string Name`

              - `required int Version`

                format: int32

            - `class BetaManagedAgentsAdvisor`

              Platform advisor roster entry: a model the session's primary thread may consult mid-turn.

              - `JsonElement Type = "advisor"`

              - `required string Model`

                The advisor model id.

        - `class BetaManagedAgentsSessionMultiagent20261001`

          Resolved multiagent configuration with three members, as copied to the `session` at creation.

          - `JsonElement Type = "multiagent_20261001"`

          - `required BetaManagedAgentsMultiagentAdvisor Advisor`

            Whether the session's primary thread can consult an advisor model.

            - `class BetaManagedAgentsMultiagentAdvisorEnabled`

              The session's primary thread can consult `model` mid-turn.

              - `JsonElement Type = "enabled"`

              - `required string Model`

                The advisor model id.

            - `class BetaManagedAgentsMultiagentAdvisorDisabled`

              The agent has no advisor.

              - `JsonElement Type = "disabled"`

          - `required BetaManagedAgentsSessionMultiagentSubagents Subagents`

            Whether the agent can spawn session threads.

            - `class BetaManagedAgentsSessionMultiagentSubagentsEnabled`

              The agent can spawn session threads.

              - `JsonElement Type = "enabled"`

              - `required BetaManagedAgentsMultiagentInlineAgents InlineAgents`

                Whether the agent can define inline agents, which are not saved, when it spawns session threads.

                - `class BetaManagedAgentsMultiagentInlineAgentsEnabled`

                  The agent can define inline agents.

                  - `JsonElement Type = "enabled"`

                - `class BetaManagedAgentsMultiagentInlineAgentsDisabled`

                  The agent cannot define inline agents.

                  - `JsonElement Type = "disabled"`

              - `required IReadOnlyList<BetaManagedAgentsSessionThreadAgent> PredefinedAgents`

                Full `agent` definitions of the predefined agents, which are saved agents that this agent can spawn as session threads.

                - `JsonElement Type = "agent"`

                - `required string ID`

                - `required string? Description`

                - `required BetaManagedAgentsExecutionIdentity ExecutionIdentity`

                  Execution principal snapshotted from the agent at session creation. Always present; `{"type": "service_account"}` when runs carry no customer-named principal.

                - `required IReadOnlyList<BetaManagedAgentsMcpServerUrlDefinition> McpServers`

                - `required BetaManagedAgentsModelConfig Model`

                  Model identifier and configuration.

                - `required string Name`

                - `required IReadOnlyList<Skill> Skills`

                - `required string? System`

                - `required IReadOnlyList<Tool> Tools`

                - `required int Version`

                  format: int32

            - `class BetaManagedAgentsMultiagentSubagentsDisabled`

              The agent cannot spawn session threads.

              - `JsonElement Type = "disabled"`

          - `required BetaManagedAgentsSessionMultiagentWorkflows Workflows`

            Whether the agent can start workflow runs.

            - `class BetaManagedAgentsSessionMultiagentWorkflowsEnabled`

              The agent can start workflow runs.

              - `JsonElement Type = "enabled"`

              - `required BetaManagedAgentsMultiagentInlineAgents InlineAgents`

                Whether a run's plan can define inline agents, which are not saved.

              - `required IReadOnlyList<BetaManagedAgentsSessionThreadAgent> PredefinedAgents`

                Full `agent` definitions of the predefined agents, which are saved agents that a run's plan can use.

                - `JsonElement Type = "agent"`

                - `required string ID`

                - `required string? Description`

                - `required BetaManagedAgentsExecutionIdentity ExecutionIdentity`

                  Execution principal snapshotted from the agent at session creation. Always present; `{"type": "service_account"}` when runs carry no customer-named principal.

                - `required IReadOnlyList<BetaManagedAgentsMcpServerUrlDefinition> McpServers`

                - `required BetaManagedAgentsModelConfig Model`

                  Model identifier and configuration.

                - `required string Name`

                - `required IReadOnlyList<Skill> Skills`

                - `required string? System`

                - `required IReadOnlyList<Tool> Tools`

                - `required int Version`

                  format: int32

            - `class BetaManagedAgentsMultiagentWorkflowsDisabled`

              The agent cannot start workflow runs.

              - `JsonElement Type = "disabled"`

      - `required string Name`

      - `required IReadOnlyList<Skill> Skills`

        - `class BetaManagedAgentsAnthropicSkill`

          A resolved Anthropic-managed skill.

        - `class BetaManagedAgentsCustomSkill`

          A resolved user-created custom skill.

      - `required string? System`

      - `required IReadOnlyList<Tool> Tools`

        - `class BetaManagedAgentsAgentToolset20260401`

        - `class BetaManagedAgentsMcpToolset`

        - `class BetaManagedAgentsCustomTool`

          A custom tool as returned in API responses.

      - `required int Version`

        format: int32

    - `BetaManagedAgentsBudgetLimit? Budget`

      The session's budget after the update: the new budget when set or replaced, or null when the update removed it. Present only when the update changed the budget.

      - `JsonElement Type = "limit"`

      - `required BetaMonetaryAmount MaxListCost`

        Maximum list cost the session may accrue. List price is used regardless of any negotiated discount, so the cap fires at or before the actual charge.

        - `required string Amount`

          Amount in minor units of the currency, as an integer decimal string with no leading zeros: "2500" is $25.00 and "50" is fifty cents. A string rather than a number so no float rounding is ever applied.

          pattern: ^(0|[1-9]\d*)$

        - `required BetaCurrency Currency`

          Uppercase ISO-4217 currency code. `USD` is the only currency currently supported; the accepted set is closed and grows only when a new currency is priced.

    - `IReadOnlyDictionary<string, string> Metadata`

      The session's full metadata bag after the update. Present when the update set non-empty metadata; absent when metadata was unchanged or cleared to empty.

    - `string? Title`

      The session's new title. Present only when the update changed it.

  - `class BetaManagedAgentsStartEvent`

    Opens a preview of a buffered event. Carries the previewed event's type and id only. Followed by zero or more event_delta events with the same event id, normally concluded by the buffered event carrying that id. If the producing model request ends without that event (an error or interrupt mid-stream), its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history.

    - `JsonElement Type = "event_start"`

    - `required BetaManagedAgentsStartEventPreview Event`

      The previewed event's type and id. The event type determines which delta types the preview's event_delta events carry: agent.message events stream content_delta fragments; agent.thinking previews are start-only — no deltas follow, and the buffered agent.thinking with the same id concludes them.

      - `class BetaManagedAgentsAgentMessagePreview`

        - `JsonElement Type = "agent.message"`

        - `required string ID`

          The id the buffered agent.message will carry if it is emitted. Matches the event_id on this preview's event_delta events.

      - `class BetaManagedAgentsAgentThinkingPreview`

        - `JsonElement Type = "agent.thinking"`

        - `required string ID`

          The id the buffered agent.thinking will carry if it is emitted. Start-only — no event_delta events follow.

  - `class BetaManagedAgentsDeltaEvent`

    An incremental update to an event that is still being streamed. Deltas are best-effort and may stop early; when the buffered event with id == event_id is produced it carries the complete content. A model request that ends early (an error or interrupt) produces no buffered event — its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history.

    - `JsonElement Type = "event_delta"`

    - `required BetaManagedAgentsDeltaContent Delta`

      One fragment of the previewed event. The delta type is named for the previewed event's field it streams into: agent.message events stream content_delta fragments, each a partial element of the content array.

      - `JsonElement Type = "content_delta"`

      - `required BetaManagedAgentsTextBlock Content`

        A partial element of the content array at index, typed like the element itself — the same shape the buffered agent.message carries in content.

      - `long Index`

        Which entry in the previewed event's content array this fragment lands in. Insert content as that entry when the index is new; append to the existing entry otherwise.

    - `required string EventID`

      The id of the event being previewed. Matches event.id on the corresponding event_start and the buffered event that reconciles the preview.

  - `class BetaManagedAgentsSystemMessageEvent`

    A mid-conversation system message event. Carries system-role content that is appended to the session as a `role: "system"` turn.

    - `JsonElement Type = "system.message"`

    - `required string ID`

      Unique identifier for this event.

    - `required IReadOnlyList<BetaManagedAgentsSystemContentBlock> Content`

      System content blocks. Text-only.

      - `JsonElement Type = "text"`

      - `required string Text`

        The text content.

        minLength: 1

    - `DateTimeOffset? ProcessedAt`

      Timestamp when this system message was processed.

      format: date-time

  - `class BetaManagedAgentsSessionUsageEvent`

    Periodic snapshot of the session's cumulative usage and tracked list cost.

    - `JsonElement Type = "session.usage"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when the snapshot was taken.

      format: date-time

    - `required BetaManagedAgentsSessionUsageSnapshot Usage`

      The session's cumulative usage at the snapshot time.

      - `double ActiveSeconds`

        Cumulative time in seconds during which the session had at least one thread in running status. Overlapping activity from concurrent threads is counted once. This is the duration the session's runtime cost is priced on.

        format: double

      - `BetaManagedAgentsCacheCreationUsage CacheCreation`

        Tokens used to create prompt cache entries, broken down by cache TTL.

        - `int Ephemeral1hInputTokens`

          Tokens used to create 1-hour ephemeral cache entries.

          format: int32

        - `int Ephemeral5mInputTokens`

          Tokens used to create 5-minute ephemeral cache entries.

          format: int32

      - `int CacheReadInputTokens`

        Total tokens read from prompt cache.

        format: int32

      - `int InputTokens`

        Total input tokens consumed across all turns.

        format: int32

      - `BetaMonetaryAmount ListCost`

        Cumulative list cost of the session across all turns, priced at public list rates.

      - `int OutputTokens`

        Total output tokens generated across all turns.

        format: int32

      - `BetaManagedAgentsServerToolUsage ServerToolUse`

        Cumulative server-executed tool usage across all turns.

        - `int WebFetchRequests`

          Number of server-executed web fetch requests.

          format: int32

        - `int WebSearchRequests`

          Number of server-executed web search requests.

          format: int32

    - `BetaManagedAgentsBudgetLimit? Budget`

      The session's configured budget at the snapshot time, or null when the session has no budget.

  - `class BetaManagedAgentsWorkflowRunCreatedEvent`

    A workflow run was created. A workflow run is background work that the session's agent starts. Emitted once per run, before the run's other `workflow_run.*` events.

    - `JsonElement Type = "workflow_run.created"`

    - `required string ID`

      Unique identifier for this event.

    - `required string? Description`

      Description that the agent gave the run, passed on as written, or `null` if it gave none.

    - `required string Name`

      Name that the agent gave the run, passed on as written, or a name that the server assigned.

    - `required IReadOnlyList<BetaManagedAgentsWorkflowRunPhase> Phases`

      The phases that the run's plan declares, in the plan's order. Can be empty.

      - `required string ID`

        Unique identifier for the phase.

      - `required string? Description`

        Description that the agent gave the phase, passed on as written, or `null` if it gave none.

      - `required string Name`

        Name that the agent gave the phase, passed on as written.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

  - `class BetaManagedAgentsWorkflowRunStatusEndedEvent`

    A workflow run ended. Emitted once per run, as the last of the run's `workflow_run.*` events.

    - `JsonElement Type = "workflow_run.status_ended"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required BetaManagedAgentsWorkflowRunResult Result`

      How the run ended.

      - `class BetaManagedAgentsWorkflowRunResultCompleted`

        The run's plan, a program that the agent wrote, finished. This does not say whether the work succeeded.

        - `JsonElement Type = "completed"`

      - `class BetaManagedAgentsWorkflowRunResultError`

        The run failed or reached its time limit.

        - `JsonElement Type = "error"`

        - `required BetaManagedAgentsWorkflowRunError Error`

          Why the run did not finish.

          - `class BetaManagedAgentsTimeoutWorkflowRunError`

            The run reached its time limit.

            - `JsonElement Type = "timeout_error"`

            - `required string Message`

              Short explanation written by the server. It never contains content from the run or its agents.

          - `class BetaManagedAgentsProgramWorkflowRunError`

            The plan, a program that the agent wrote, failed, or the server refused it.

            - `JsonElement Type = "program_error"`

            - `required string Message`

              Short explanation written by the server. It never contains content from the run or its agents.

          - `class BetaManagedAgentsUnknownWorkflowRunError`

            A failure that has no type of its own.

            - `JsonElement Type = "unknown_error"`

            - `required string Message`

              Short explanation written by the server. It never contains content from the run or its agents.

          - `class BetaManagedAgentsThreadLimitWorkflowRunError`

            The run exceeded the limit on the number of threads that a run can create.

            - `JsonElement Type = "thread_limit_error"`

            - `required string Message`

              Short explanation written by the server. It never contains content from the run or its agents.

          - `class BetaManagedAgentsMaxWorkflowRunsWorkflowRunError`

            No run was created, because the session was at its limit of open workflow runs, which are runs that have not ended. Only `workflow_run.error` carries this type.

            - `JsonElement Type = "max_workflow_runs_error"`

            - `required string Message`

              Short explanation written by the server. It never contains content from the run or its agents.

      - `class BetaManagedAgentsWorkflowRunResultStopped`

        The agent stopped the run.

        - `JsonElement Type = "stopped"`

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

  - `class BetaManagedAgentsWorkflowRunPhaseStartedEvent`

    A workflow run's plan entered a phase.

    - `JsonElement Type = "workflow_run.phase_started"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

    - `required string WorkflowRunPhaseID`

      Identifier of the phase, as in `phases` on the run's `workflow_run.created` event.

  - `class BetaManagedAgentsWorkflowRunPhaseEndedEvent`

    A workflow run's plan left a phase, or the run's end closed it. Emitted once for every `workflow_run.phase_started` event, before the run's `workflow_run.status_ended` event. The event does not say whether the plan finished the phase's work, or why it left.

    - `JsonElement Type = "workflow_run.phase_ended"`

    - `required string ID`

      Unique identifier for this event.

    - `required string PhaseStartedID`

      Identifier of the `workflow_run.phase_started` event that opened the phase.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

    - `required string WorkflowRunPhaseID`

      Identifier of the phase, as in `phases` on the run's `workflow_run.created` event.

  - `class BetaManagedAgentsWorkflowRunStatusRunningEvent`

    A workflow run is running. Emitted when the run starts to execute, and each time it resumes after being idle. A run that starts idle emits `workflow_run.status_idle` first.

    - `JsonElement Type = "workflow_run.status_running"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

  - `class BetaManagedAgentsWorkflowRunStatusIdleEvent`

    A workflow run is idle. Emitted each time the run goes idle, whatever the cause. If the run ends while idle, no `workflow_run.status_running` comes between this event and its `workflow_run.status_ended`.

    - `JsonElement Type = "workflow_run.status_idle"`

    - `required string ID`

      Unique identifier for this event.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string WorkflowRunID`

      Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

  - `class BetaManagedAgentsWorkflowRunErrorEvent`

    A workflow run met an error, or an error kept a run from being created. A run that ends with a `result.type` of `error` emits this event before its `workflow_run.status_ended`, with the same `error`.

    - `JsonElement Type = "workflow_run.error"`

    - `required string ID`

      Unique identifier for this event.

    - `required BetaManagedAgentsWorkflowRunError Error`

      Why the run did not finish, or was not created.

    - `required DateTimeOffset ProcessedAt`

      Timestamp when this event was processed.

      format: date-time

    - `required string? WorkflowRunID`

      Identifier of the run that met the error, or `null` when the error kept a run from being created.

### Beta Managed Agents System Message Event Params

- `class BetaManagedAgentsSystemMessageEventParams`

  Privileged context for the accompanying turn and all subsequent turns, appended to the session's system context as a `role: "system"` turn rather than replacing the top-level system prompt. At most one per request: it must be the final event and immediately follow the `user.message`, `user.tool_result`, or `user.custom_tool_result` it accompanies. Only supported on models that accept mid-conversation system messages.

  - `JsonElement Type = "system.message"`

  - `required IReadOnlyList<BetaManagedAgentsSystemContentBlock> Content`

    System content blocks to append. Text-only.

    - `JsonElement Type = "text"`

    - `required string Text`

      The text content.

      minLength: 1

### Beta Managed Agents Text Block

- `class BetaManagedAgentsTextBlock`

  Regular text content.

  - `JsonElement Type = "text"`

  - `required string Text`

    The text content.

    minLength: 1

### Beta Managed Agents Text Rubric

- `class BetaManagedAgentsTextRubric`

  Rubric content provided inline as text.

  - `JsonElement Type = "text"`

  - `required string Content`

    Rubric content. Plain text or markdown — the grader treats it as freeform text.

### Beta Managed Agents Text Rubric Params

- `class BetaManagedAgentsTextRubricParams`

  Rubric content provided inline as text.

  - `JsonElement Type = "text"`

  - `required string Content`

    Rubric content. Plain text or markdown — the grader treats it as freeform text. Maximum 262144 characters.

    maxLength: 262144

### Beta Managed Agents Thread Limit Workflow Run Error

- `class BetaManagedAgentsThreadLimitWorkflowRunError`

  The run exceeded the limit on the number of threads that a run can create.

  - `JsonElement Type = "thread_limit_error"`

  - `required string Message`

    Short explanation written by the server. It never contains content from the run or its agents.

### Beta Managed Agents Timeout Workflow Run Error

- `class BetaManagedAgentsTimeoutWorkflowRunError`

  The run reached its time limit.

  - `JsonElement Type = "timeout_error"`

  - `required string Message`

    Short explanation written by the server. It never contains content from the run or its agents.

### Beta Managed Agents Tool Use Limit Reached Error

- `class BetaManagedAgentsToolUseLimitReachedError`

  The turn stopped because the agent loop reached its limit on tool-use rounds (one model response that calls tools, plus running those tools, is one round), not because a request failed. The thread goes idle with `stop_reason: retries_exhausted` (a child thread then terminates); the next `user.message` starts a new turn.

  - `JsonElement Type = "tool_use_limit_reached_error"`

  - `required string Message`

    Human-readable error description.

  - `required RetryStatus RetryStatus`

    What the client should do next.

    - `class BetaManagedAgentsRetryStatusRetrying`

      The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

      - `JsonElement Type = "retrying"`

    - `class BetaManagedAgentsRetryStatusExhausted`

      This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

      - `JsonElement Type = "exhausted"`

    - `class BetaManagedAgentsRetryStatusTerminal`

      The session encountered a terminal error and will transition to `terminated` state.

      - `JsonElement Type = "terminal"`

### Beta Managed Agents Unknown Error

- `class BetaManagedAgentsUnknownError`

  An unknown or unexpected error occurred during session execution. A fallback variant; clients that don't recognize a new error code can match on `retry_status` and `message` alone.

  - `JsonElement Type = "unknown_error"`

  - `required string Message`

    Human-readable error description.

  - `required RetryStatus RetryStatus`

    What the client should do next.

    - `class BetaManagedAgentsRetryStatusRetrying`

      The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out.

      - `JsonElement Type = "retrying"`

    - `class BetaManagedAgentsRetryStatusExhausted`

      This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

      - `JsonElement Type = "exhausted"`

    - `class BetaManagedAgentsRetryStatusTerminal`

      The session encountered a terminal error and will transition to `terminated` state.

      - `JsonElement Type = "terminal"`

### Beta Managed Agents Unknown Workflow Run Error

- `class BetaManagedAgentsUnknownWorkflowRunError`

  A failure that has no type of its own.

  - `JsonElement Type = "unknown_error"`

  - `required string Message`

    Short explanation written by the server. It never contains content from the run or its agents.

### Beta Managed Agents URL Document Source

- `class BetaManagedAgentsUrlDocumentSource`

  Document referenced by URL.

  - `JsonElement Type = "url"`

  - `required string Url`

    URL of the document to fetch.

    minLength: 1

### Beta Managed Agents URL Image Source

- `class BetaManagedAgentsUrlImageSource`

  Image referenced by URL.

  - `JsonElement Type = "url"`

  - `required string Url`

    URL of the image to fetch.

    minLength: 1

### Beta Managed Agents User Custom Tool Result Event

- `class BetaManagedAgentsUserCustomToolResultEvent`

  Event sent by the client providing the result of a custom tool execution.

  - `JsonElement Type = "user.custom_tool_result"`

  - `required string ID`

    Unique identifier for this event.

  - `required string CustomToolUseID`

    The id of the `agent.custom_tool_use` event this result corresponds to. It is also listed in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

  - `IReadOnlyList<Content> Content`

    The result content returned by the tool.

    - `class BetaManagedAgentsTextBlock`

      Regular text content.

      - `JsonElement Type = "text"`

      - `required string Text`

        The text content.

        minLength: 1

    - `class BetaManagedAgentsImageBlock`

      Image content specified directly as base64 data or as a reference via a URL.

      - `JsonElement Type = "image"`

      - `required Source Source`

        The source of the image data.

        - `class BetaManagedAgentsBase64ImageSource`

          Base64-encoded image data.

          - `JsonElement Type = "base64"`

          - `required string Data`

            Base64-encoded image data.

            minLength: 1

          - `required string MediaType`

            MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif", "image/webp").

            minLength: 1

        - `class BetaManagedAgentsUrlImageSource`

          Image referenced by URL.

          - `JsonElement Type = "url"`

          - `required string Url`

            URL of the image to fetch.

            minLength: 1

        - `class BetaManagedAgentsFileImageSource`

          Image referenced by file ID.

          - `JsonElement Type = "file"`

          - `required string FileID`

            ID of a previously uploaded file.

            minLength: 1

    - `class BetaManagedAgentsDocumentBlock`

      Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `JsonElement Type = "document"`

      - `required Source Source`

        The source of the document data.

        - `class BetaManagedAgentsBase64DocumentSource`

          Base64-encoded document data.

          - `JsonElement Type = "base64"`

          - `required string Data`

            Base64-encoded document data.

            minLength: 1

          - `required string MediaType`

            MIME type of the document (e.g., "application/pdf").

            minLength: 1

        - `class BetaManagedAgentsPlainTextDocumentSource`

          Plain text document content.

          - `JsonElement Type = "text"`

          - `required string Data`

            The plain text content.

            minLength: 1

          - `JsonElement MediaType = "text/plain"`

            MIME type of the text content. Must be "text/plain".

        - `class BetaManagedAgentsUrlDocumentSource`

          Document referenced by URL.

          - `JsonElement Type = "url"`

          - `required string Url`

            URL of the document to fetch.

            minLength: 1

        - `class BetaManagedAgentsFileDocumentSource`

          Document referenced by file ID.

          - `JsonElement Type = "file"`

          - `required string FileID`

            ID of a previously uploaded file.

            minLength: 1

      - `string? Context`

        Additional context about the document for the model.

      - `string? Title`

        The title of the document.

    - `class BetaManagedAgentsSearchResultBlock`

      A block containing a web search result.

      - `JsonElement Type = "search_result"`

      - `required BetaManagedAgentsSearchResultCitations Citations`

        Citation settings for this search result.

        - `required bool Enabled`

          Whether citations are enabled for this search result.

      - `required IReadOnlyList<BetaManagedAgentsSearchResultContent> Content`

        Array of text content blocks from the search result.

        - `JsonElement Type = "text"`

        - `required string Text`

          The text content.

          minLength: 1

      - `required string Source`

        The URL source of the search result.

        minLength: 1

      - `required string Title`

        The title of the search result.

        minLength: 1

  - `bool? IsError`

    Whether the tool execution resulted in an error.

  - `DateTimeOffset? ProcessedAt`

    Timestamp when this result was processed.

    format: date-time

  - `string? SessionThreadID`

    Set by the server to the subagent thread this result was routed to. Omitted when it was routed to the primary thread.

### Beta Managed Agents User Custom Tool Result Event Params

- `class BetaManagedAgentsUserCustomToolResultEventParams`

  Parameters for providing the result of a custom tool execution.

  - `JsonElement Type = "user.custom_tool_result"`

  - `required string CustomToolUseID`

    The id of the `agent.custom_tool_use` event this result corresponds to. It is also listed in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

    minLength: 1, maxLength: 128

  - `IReadOnlyList<Content> Content`

    The result content returned by the tool.

    - `class BetaManagedAgentsTextBlock`

      Regular text content.

      - `JsonElement Type = "text"`

      - `required string Text`

        The text content.

        minLength: 1

    - `class BetaManagedAgentsImageBlock`

      Image content specified directly as base64 data or as a reference via a URL.

      - `JsonElement Type = "image"`

      - `required Source Source`

        The source of the image data.

        - `class BetaManagedAgentsBase64ImageSource`

          Base64-encoded image data.

          - `JsonElement Type = "base64"`

          - `required string Data`

            Base64-encoded image data.

            minLength: 1

          - `required string MediaType`

            MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif", "image/webp").

            minLength: 1

        - `class BetaManagedAgentsUrlImageSource`

          Image referenced by URL.

          - `JsonElement Type = "url"`

          - `required string Url`

            URL of the image to fetch.

            minLength: 1

        - `class BetaManagedAgentsFileImageSource`

          Image referenced by file ID.

          - `JsonElement Type = "file"`

          - `required string FileID`

            ID of a previously uploaded file.

            minLength: 1

    - `class BetaManagedAgentsDocumentBlock`

      Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `JsonElement Type = "document"`

      - `required Source Source`

        The source of the document data.

        - `class BetaManagedAgentsBase64DocumentSource`

          Base64-encoded document data.

          - `JsonElement Type = "base64"`

          - `required string Data`

            Base64-encoded document data.

            minLength: 1

          - `required string MediaType`

            MIME type of the document (e.g., "application/pdf").

            minLength: 1

        - `class BetaManagedAgentsPlainTextDocumentSource`

          Plain text document content.

          - `JsonElement Type = "text"`

          - `required string Data`

            The plain text content.

            minLength: 1

          - `JsonElement MediaType = "text/plain"`

            MIME type of the text content. Must be "text/plain".

        - `class BetaManagedAgentsUrlDocumentSource`

          Document referenced by URL.

          - `JsonElement Type = "url"`

          - `required string Url`

            URL of the document to fetch.

            minLength: 1

        - `class BetaManagedAgentsFileDocumentSource`

          Document referenced by file ID.

          - `JsonElement Type = "file"`

          - `required string FileID`

            ID of a previously uploaded file.

            minLength: 1

      - `string? Context`

        Additional context about the document for the model.

      - `string? Title`

        The title of the document.

    - `class BetaManagedAgentsSearchResultBlock`

      A block containing a web search result.

      - `JsonElement Type = "search_result"`

      - `required BetaManagedAgentsSearchResultCitations Citations`

        Citation settings for this search result.

        - `required bool Enabled`

          Whether citations are enabled for this search result.

      - `required IReadOnlyList<BetaManagedAgentsSearchResultContent> Content`

        Array of text content blocks from the search result.

        - `JsonElement Type = "text"`

        - `required string Text`

          The text content.

          minLength: 1

      - `required string Source`

        The URL source of the search result.

        minLength: 1

      - `required string Title`

        The title of the search result.

        minLength: 1

  - `bool? IsError`

    Whether the tool execution resulted in an error.

### Beta Managed Agents User Define Outcome Event

- `class BetaManagedAgentsUserDefineOutcomeEvent`

  Echo of a `user.define_outcome` input event. Carries the server-generated `outcome_id` that subsequent `span.outcome_evaluation_*` events reference.

  - `JsonElement Type = "user.define_outcome"`

  - `required string ID`

    Unique identifier for this event.

  - `required string Description`

    What the agent should produce. Copied from the input event.

  - `required int? MaxIterations`

    Evaluate-then-revise cycles before giving up. Default 3, max 20.

    format: int32

  - `required string OutcomeID`

    Server-generated `outc_` ID for this outcome. Referenced by `span.outcome_evaluation_*` events and the session's `outcome_evaluations` list.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when the outcome was accepted.

    format: date-time

  - `required Rubric Rubric`

    How to grade the outcome. File rubrics are currently resolved to their text content; clients should handle both variants.

    - `class BetaManagedAgentsFileRubric`

      Rubric referenced by a file uploaded via the Files API.

      - `JsonElement Type = "file"`

      - `required string FileID`

        ID of the rubric file.

    - `class BetaManagedAgentsTextRubric`

      Rubric content provided inline as text.

      - `JsonElement Type = "text"`

      - `required string Content`

        Rubric content. Plain text or markdown — the grader treats it as freeform text.

### Beta Managed Agents User Define Outcome Event Params

- `class BetaManagedAgentsUserDefineOutcomeEventParams`

  Parameters for defining an outcome the agent should work toward. The agent begins work on receipt.

  - `JsonElement Type = "user.define_outcome"`

  - `required string Description`

    What the agent should produce. This is the task specification.

  - `required Rubric Rubric`

    How to grade the outcome. Text or file reference.

    - `class BetaManagedAgentsFileRubricParams`

      Rubric referenced by a file uploaded via the Files API.

      - `JsonElement Type = "file"`

      - `required string FileID`

        ID of the rubric file.

    - `class BetaManagedAgentsTextRubricParams`

      Rubric content provided inline as text.

      - `JsonElement Type = "text"`

      - `required string Content`

        Rubric content. Plain text or markdown — the grader treats it as freeform text. Maximum 262144 characters.

        maxLength: 262144

  - `int? MaxIterations`

    Eval→revision cycles before giving up. Default 3, max 20.

    format: int32

### Beta Managed Agents User Interrupt Event

- `class BetaManagedAgentsUserInterruptEvent`

  An interrupt event that pauses agent execution and returns control to the user.

  - `JsonElement Type = "user.interrupt"`

  - `required string ID`

    Unique identifier for this event.

  - `DateTimeOffset? ProcessedAt`

    Timestamp when the interrupt was processed.

    format: date-time

  - `string? SessionThreadID`

    If absent, interrupts every non-archived thread in a multiagent session (or the primary alone in a single-agent session). If present, interrupts only the named thread.

### Beta Managed Agents User Interrupt Event Params

- `class BetaManagedAgentsUserInterruptEventParams`

  Parameters for sending an interrupt to pause the agent.

  - `JsonElement Type = "user.interrupt"`

  - `string? SessionThreadID`

    If absent, interrupts every non-archived thread in a multiagent session (or the primary alone in a single-agent session). If present, interrupts only the named thread.

### Beta Managed Agents User Message Event

- `class BetaManagedAgentsUserMessageEvent`

  A user message event in the session conversation.

  - `JsonElement Type = "user.message"`

  - `required string ID`

    Unique identifier for this event.

  - `required IReadOnlyList<Content> Content`

    Array of content blocks comprising the user message.

    - `class BetaManagedAgentsTextBlock`

      Regular text content.

      - `JsonElement Type = "text"`

      - `required string Text`

        The text content.

        minLength: 1

    - `class BetaManagedAgentsImageBlock`

      Image content specified directly as base64 data or as a reference via a URL.

      - `JsonElement Type = "image"`

      - `required Source Source`

        The source of the image data.

        - `class BetaManagedAgentsBase64ImageSource`

          Base64-encoded image data.

          - `JsonElement Type = "base64"`

          - `required string Data`

            Base64-encoded image data.

            minLength: 1

          - `required string MediaType`

            MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif", "image/webp").

            minLength: 1

        - `class BetaManagedAgentsUrlImageSource`

          Image referenced by URL.

          - `JsonElement Type = "url"`

          - `required string Url`

            URL of the image to fetch.

            minLength: 1

        - `class BetaManagedAgentsFileImageSource`

          Image referenced by file ID.

          - `JsonElement Type = "file"`

          - `required string FileID`

            ID of a previously uploaded file.

            minLength: 1

    - `class BetaManagedAgentsDocumentBlock`

      Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `JsonElement Type = "document"`

      - `required Source Source`

        The source of the document data.

        - `class BetaManagedAgentsBase64DocumentSource`

          Base64-encoded document data.

          - `JsonElement Type = "base64"`

          - `required string Data`

            Base64-encoded document data.

            minLength: 1

          - `required string MediaType`

            MIME type of the document (e.g., "application/pdf").

            minLength: 1

        - `class BetaManagedAgentsPlainTextDocumentSource`

          Plain text document content.

          - `JsonElement Type = "text"`

          - `required string Data`

            The plain text content.

            minLength: 1

          - `JsonElement MediaType = "text/plain"`

            MIME type of the text content. Must be "text/plain".

        - `class BetaManagedAgentsUrlDocumentSource`

          Document referenced by URL.

          - `JsonElement Type = "url"`

          - `required string Url`

            URL of the document to fetch.

            minLength: 1

        - `class BetaManagedAgentsFileDocumentSource`

          Document referenced by file ID.

          - `JsonElement Type = "file"`

          - `required string FileID`

            ID of a previously uploaded file.

            minLength: 1

      - `string? Context`

        Additional context about the document for the model.

      - `string? Title`

        The title of the document.

    - `class BetaManagedAgentsRedactedBlock`

      Placeholder for content withheld by Anthropic model policy.

      - `JsonElement Type = "redacted"`

  - `DateTimeOffset? ProcessedAt`

    Timestamp when the agent finished processing this message.

    format: date-time

### Beta Managed Agents User Message Event Params

- `class BetaManagedAgentsUserMessageEventParams`

  Parameters for sending a user message to the session.

  - `JsonElement Type = "user.message"`

  - `required IReadOnlyList<Content> Content`

    Array of content blocks for the user message.

    - `class BetaManagedAgentsTextBlock`

      Regular text content.

      - `JsonElement Type = "text"`

      - `required string Text`

        The text content.

        minLength: 1

    - `class BetaManagedAgentsImageBlock`

      Image content specified directly as base64 data or as a reference via a URL.

      - `JsonElement Type = "image"`

      - `required Source Source`

        The source of the image data.

        - `class BetaManagedAgentsBase64ImageSource`

          Base64-encoded image data.

          - `JsonElement Type = "base64"`

          - `required string Data`

            Base64-encoded image data.

            minLength: 1

          - `required string MediaType`

            MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif", "image/webp").

            minLength: 1

        - `class BetaManagedAgentsUrlImageSource`

          Image referenced by URL.

          - `JsonElement Type = "url"`

          - `required string Url`

            URL of the image to fetch.

            minLength: 1

        - `class BetaManagedAgentsFileImageSource`

          Image referenced by file ID.

          - `JsonElement Type = "file"`

          - `required string FileID`

            ID of a previously uploaded file.

            minLength: 1

    - `class BetaManagedAgentsDocumentBlock`

      Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `JsonElement Type = "document"`

      - `required Source Source`

        The source of the document data.

        - `class BetaManagedAgentsBase64DocumentSource`

          Base64-encoded document data.

          - `JsonElement Type = "base64"`

          - `required string Data`

            Base64-encoded document data.

            minLength: 1

          - `required string MediaType`

            MIME type of the document (e.g., "application/pdf").

            minLength: 1

        - `class BetaManagedAgentsPlainTextDocumentSource`

          Plain text document content.

          - `JsonElement Type = "text"`

          - `required string Data`

            The plain text content.

            minLength: 1

          - `JsonElement MediaType = "text/plain"`

            MIME type of the text content. Must be "text/plain".

        - `class BetaManagedAgentsUrlDocumentSource`

          Document referenced by URL.

          - `JsonElement Type = "url"`

          - `required string Url`

            URL of the document to fetch.

            minLength: 1

        - `class BetaManagedAgentsFileDocumentSource`

          Document referenced by file ID.

          - `JsonElement Type = "file"`

          - `required string FileID`

            ID of a previously uploaded file.

            minLength: 1

      - `string? Context`

        Additional context about the document for the model.

      - `string? Title`

        The title of the document.

    - `class BetaManagedAgentsRedactedBlock`

      Placeholder for content withheld by Anthropic model policy.

      - `JsonElement Type = "redacted"`

### Beta Managed Agents User Tool Confirmation Event

- `class BetaManagedAgentsUserToolConfirmationEvent`

  A tool confirmation event that approves or denies a pending tool execution.

  - `JsonElement Type = "user.tool_confirmation"`

  - `required string ID`

    Unique identifier for this event.

  - `required Result Result`

    The confirmation result: 'allow' or 'deny'.

    - `Allow("allow")`

    - `Deny("deny")`

  - `required string ToolUseID`

    The id of the `agent.tool_use` or `agent.mcp_tool_use` event this result corresponds to, which can be found in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

  - `string? DenyMessage`

    Optional message providing context for a 'deny' decision. Only allowed when result is 'deny'.

    maxLength: 10000

  - `DateTimeOffset? ProcessedAt`

    Timestamp when the confirmation was processed.

    format: date-time

  - `string? SessionThreadID`

    Set by the server to the subagent thread this confirmation was routed to. Omitted when it was routed to the primary thread.

### Beta Managed Agents User Tool Confirmation Event Params

- `class BetaManagedAgentsUserToolConfirmationEventParams`

  Parameters for confirming or denying a tool execution request.

  - `JsonElement Type = "user.tool_confirmation"`

  - `required Result Result`

    The confirmation result: 'allow' or 'deny'.

    - `Allow("allow")`

    - `Deny("deny")`

  - `required string ToolUseID`

    The id of the `agent.tool_use` or `agent.mcp_tool_use` event this result corresponds to, which can be found in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

    minLength: 1, maxLength: 128

  - `string? DenyMessage`

    Optional message providing context for a 'deny' decision. Only allowed when result is 'deny'.

    maxLength: 10000

### Beta Managed Agents User Tool Result Event Params

- `class BetaManagedAgentsUserToolResultEventParams`

  Parameters for providing the result of an agent-toolset tool execution. Only valid on `self_hosted` environments, where sandbox-routed tools are executed by the client rather than the server.

  - `JsonElement Type = "user.tool_result"`

  - `required string ToolUseID`

    The id of the `agent.tool_use` event this result corresponds to, which can be found in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list?sdk_languages=csharp#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.

    minLength: 1, maxLength: 128

  - `IReadOnlyList<Content> Content`

    The result content returned by the tool.

    - `class BetaManagedAgentsTextBlock`

      Regular text content.

      - `JsonElement Type = "text"`

      - `required string Text`

        The text content.

        minLength: 1

    - `class BetaManagedAgentsImageBlock`

      Image content specified directly as base64 data or as a reference via a URL.

      - `JsonElement Type = "image"`

      - `required Source Source`

        The source of the image data.

        - `class BetaManagedAgentsBase64ImageSource`

          Base64-encoded image data.

          - `JsonElement Type = "base64"`

          - `required string Data`

            Base64-encoded image data.

            minLength: 1

          - `required string MediaType`

            MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif", "image/webp").

            minLength: 1

        - `class BetaManagedAgentsUrlImageSource`

          Image referenced by URL.

          - `JsonElement Type = "url"`

          - `required string Url`

            URL of the image to fetch.

            minLength: 1

        - `class BetaManagedAgentsFileImageSource`

          Image referenced by file ID.

          - `JsonElement Type = "file"`

          - `required string FileID`

            ID of a previously uploaded file.

            minLength: 1

    - `class BetaManagedAgentsDocumentBlock`

      Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      - `JsonElement Type = "document"`

      - `required Source Source`

        The source of the document data.

        - `class BetaManagedAgentsBase64DocumentSource`

          Base64-encoded document data.

          - `JsonElement Type = "base64"`

          - `required string Data`

            Base64-encoded document data.

            minLength: 1

          - `required string MediaType`

            MIME type of the document (e.g., "application/pdf").

            minLength: 1

        - `class BetaManagedAgentsPlainTextDocumentSource`

          Plain text document content.

          - `JsonElement Type = "text"`

          - `required string Data`

            The plain text content.

            minLength: 1

          - `JsonElement MediaType = "text/plain"`

            MIME type of the text content. Must be "text/plain".

        - `class BetaManagedAgentsUrlDocumentSource`

          Document referenced by URL.

          - `JsonElement Type = "url"`

          - `required string Url`

            URL of the document to fetch.

            minLength: 1

        - `class BetaManagedAgentsFileDocumentSource`

          Document referenced by file ID.

          - `JsonElement Type = "file"`

          - `required string FileID`

            ID of a previously uploaded file.

            minLength: 1

      - `string? Context`

        Additional context about the document for the model.

      - `string? Title`

        The title of the document.

    - `class BetaManagedAgentsSearchResultBlock`

      A block containing a web search result.

      - `JsonElement Type = "search_result"`

      - `required BetaManagedAgentsSearchResultCitations Citations`

        Citation settings for this search result.

        - `required bool Enabled`

          Whether citations are enabled for this search result.

      - `required IReadOnlyList<BetaManagedAgentsSearchResultContent> Content`

        Array of text content blocks from the search result.

        - `JsonElement Type = "text"`

        - `required string Text`

          The text content.

          minLength: 1

      - `required string Source`

        The URL source of the search result.

        minLength: 1

      - `required string Title`

        The title of the search result.

        minLength: 1

  - `bool? IsError`

    Whether the tool execution resulted in an error.

### Beta Managed Agents Workflow Run Created Event

- `class BetaManagedAgentsWorkflowRunCreatedEvent`

  A workflow run was created. A workflow run is background work that the session's agent starts. Emitted once per run, before the run's other `workflow_run.*` events.

  - `JsonElement Type = "workflow_run.created"`

  - `required string ID`

    Unique identifier for this event.

  - `required string? Description`

    Description that the agent gave the run, passed on as written, or `null` if it gave none.

  - `required string Name`

    Name that the agent gave the run, passed on as written, or a name that the server assigned.

  - `required IReadOnlyList<BetaManagedAgentsWorkflowRunPhase> Phases`

    The phases that the run's plan declares, in the plan's order. Can be empty.

    - `required string ID`

      Unique identifier for the phase.

    - `required string? Description`

      Description that the agent gave the phase, passed on as written, or `null` if it gave none.

    - `required string Name`

      Name that the agent gave the phase, passed on as written.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when this event was processed.

    format: date-time

  - `required string WorkflowRunID`

    Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

### Beta Managed Agents Workflow Run Error

- `class BetaManagedAgentsWorkflowRunError: union`

  Why a workflow run did not finish, or was not created. More types may be added. On `workflow_run.status_ended`, for a `type` you do not recognize, rely on the event's `result.type`.

  - `class BetaManagedAgentsTimeoutWorkflowRunError`

    The run reached its time limit.

    - `JsonElement Type = "timeout_error"`

    - `required string Message`

      Short explanation written by the server. It never contains content from the run or its agents.

  - `class BetaManagedAgentsProgramWorkflowRunError`

    The plan, a program that the agent wrote, failed, or the server refused it.

    - `JsonElement Type = "program_error"`

    - `required string Message`

      Short explanation written by the server. It never contains content from the run or its agents.

  - `class BetaManagedAgentsUnknownWorkflowRunError`

    A failure that has no type of its own.

    - `JsonElement Type = "unknown_error"`

    - `required string Message`

      Short explanation written by the server. It never contains content from the run or its agents.

  - `class BetaManagedAgentsThreadLimitWorkflowRunError`

    The run exceeded the limit on the number of threads that a run can create.

    - `JsonElement Type = "thread_limit_error"`

    - `required string Message`

      Short explanation written by the server. It never contains content from the run or its agents.

  - `class BetaManagedAgentsMaxWorkflowRunsWorkflowRunError`

    No run was created, because the session was at its limit of open workflow runs, which are runs that have not ended. Only `workflow_run.error` carries this type.

    - `JsonElement Type = "max_workflow_runs_error"`

    - `required string Message`

      Short explanation written by the server. It never contains content from the run or its agents.

### Beta Managed Agents Workflow Run Error Event

- `class BetaManagedAgentsWorkflowRunErrorEvent`

  A workflow run met an error, or an error kept a run from being created. A run that ends with a `result.type` of `error` emits this event before its `workflow_run.status_ended`, with the same `error`.

  - `JsonElement Type = "workflow_run.error"`

  - `required string ID`

    Unique identifier for this event.

  - `required BetaManagedAgentsWorkflowRunError Error`

    Why the run did not finish, or was not created.

    - `class BetaManagedAgentsTimeoutWorkflowRunError`

      The run reached its time limit.

      - `JsonElement Type = "timeout_error"`

      - `required string Message`

        Short explanation written by the server. It never contains content from the run or its agents.

    - `class BetaManagedAgentsProgramWorkflowRunError`

      The plan, a program that the agent wrote, failed, or the server refused it.

      - `JsonElement Type = "program_error"`

      - `required string Message`

        Short explanation written by the server. It never contains content from the run or its agents.

    - `class BetaManagedAgentsUnknownWorkflowRunError`

      A failure that has no type of its own.

      - `JsonElement Type = "unknown_error"`

      - `required string Message`

        Short explanation written by the server. It never contains content from the run or its agents.

    - `class BetaManagedAgentsThreadLimitWorkflowRunError`

      The run exceeded the limit on the number of threads that a run can create.

      - `JsonElement Type = "thread_limit_error"`

      - `required string Message`

        Short explanation written by the server. It never contains content from the run or its agents.

    - `class BetaManagedAgentsMaxWorkflowRunsWorkflowRunError`

      No run was created, because the session was at its limit of open workflow runs, which are runs that have not ended. Only `workflow_run.error` carries this type.

      - `JsonElement Type = "max_workflow_runs_error"`

      - `required string Message`

        Short explanation written by the server. It never contains content from the run or its agents.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when this event was processed.

    format: date-time

  - `required string? WorkflowRunID`

    Identifier of the run that met the error, or `null` when the error kept a run from being created.

### Beta Managed Agents Workflow Run Phase

- `class BetaManagedAgentsWorkflowRunPhase`

  A phase that a workflow run's plan declares.

  - `required string ID`

    Unique identifier for the phase.

  - `required string? Description`

    Description that the agent gave the phase, passed on as written, or `null` if it gave none.

  - `required string Name`

    Name that the agent gave the phase, passed on as written.

### Beta Managed Agents Workflow Run Phase Ended Event

- `class BetaManagedAgentsWorkflowRunPhaseEndedEvent`

  A workflow run's plan left a phase, or the run's end closed it. Emitted once for every `workflow_run.phase_started` event, before the run's `workflow_run.status_ended` event. The event does not say whether the plan finished the phase's work, or why it left.

  - `JsonElement Type = "workflow_run.phase_ended"`

  - `required string ID`

    Unique identifier for this event.

  - `required string PhaseStartedID`

    Identifier of the `workflow_run.phase_started` event that opened the phase.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when this event was processed.

    format: date-time

  - `required string WorkflowRunID`

    Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

  - `required string WorkflowRunPhaseID`

    Identifier of the phase, as in `phases` on the run's `workflow_run.created` event.

### Beta Managed Agents Workflow Run Phase Started Event

- `class BetaManagedAgentsWorkflowRunPhaseStartedEvent`

  A workflow run's plan entered a phase.

  - `JsonElement Type = "workflow_run.phase_started"`

  - `required string ID`

    Unique identifier for this event.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when this event was processed.

    format: date-time

  - `required string WorkflowRunID`

    Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

  - `required string WorkflowRunPhaseID`

    Identifier of the phase, as in `phases` on the run's `workflow_run.created` event.

### Beta Managed Agents Workflow Run Result

- `class BetaManagedAgentsWorkflowRunResult: union`

  How a workflow run ended.

  - `class BetaManagedAgentsWorkflowRunResultCompleted`

    The run's plan, a program that the agent wrote, finished. This does not say whether the work succeeded.

    - `JsonElement Type = "completed"`

  - `class BetaManagedAgentsWorkflowRunResultError`

    The run failed or reached its time limit.

    - `JsonElement Type = "error"`

    - `required BetaManagedAgentsWorkflowRunError Error`

      Why the run did not finish.

      - `class BetaManagedAgentsTimeoutWorkflowRunError`

        The run reached its time limit.

        - `JsonElement Type = "timeout_error"`

        - `required string Message`

          Short explanation written by the server. It never contains content from the run or its agents.

      - `class BetaManagedAgentsProgramWorkflowRunError`

        The plan, a program that the agent wrote, failed, or the server refused it.

        - `JsonElement Type = "program_error"`

        - `required string Message`

          Short explanation written by the server. It never contains content from the run or its agents.

      - `class BetaManagedAgentsUnknownWorkflowRunError`

        A failure that has no type of its own.

        - `JsonElement Type = "unknown_error"`

        - `required string Message`

          Short explanation written by the server. It never contains content from the run or its agents.

      - `class BetaManagedAgentsThreadLimitWorkflowRunError`

        The run exceeded the limit on the number of threads that a run can create.

        - `JsonElement Type = "thread_limit_error"`

        - `required string Message`

          Short explanation written by the server. It never contains content from the run or its agents.

      - `class BetaManagedAgentsMaxWorkflowRunsWorkflowRunError`

        No run was created, because the session was at its limit of open workflow runs, which are runs that have not ended. Only `workflow_run.error` carries this type.

        - `JsonElement Type = "max_workflow_runs_error"`

        - `required string Message`

          Short explanation written by the server. It never contains content from the run or its agents.

  - `class BetaManagedAgentsWorkflowRunResultStopped`

    The agent stopped the run.

    - `JsonElement Type = "stopped"`

### Beta Managed Agents Workflow Run Result Completed

- `class BetaManagedAgentsWorkflowRunResultCompleted`

  The run's plan, a program that the agent wrote, finished. This does not say whether the work succeeded.

  - `JsonElement Type = "completed"`

### Beta Managed Agents Workflow Run Result Error

- `class BetaManagedAgentsWorkflowRunResultError`

  The run failed or reached its time limit.

  - `JsonElement Type = "error"`

  - `required BetaManagedAgentsWorkflowRunError Error`

    Why the run did not finish.

    - `class BetaManagedAgentsTimeoutWorkflowRunError`

      The run reached its time limit.

      - `JsonElement Type = "timeout_error"`

      - `required string Message`

        Short explanation written by the server. It never contains content from the run or its agents.

    - `class BetaManagedAgentsProgramWorkflowRunError`

      The plan, a program that the agent wrote, failed, or the server refused it.

      - `JsonElement Type = "program_error"`

      - `required string Message`

        Short explanation written by the server. It never contains content from the run or its agents.

    - `class BetaManagedAgentsUnknownWorkflowRunError`

      A failure that has no type of its own.

      - `JsonElement Type = "unknown_error"`

      - `required string Message`

        Short explanation written by the server. It never contains content from the run or its agents.

    - `class BetaManagedAgentsThreadLimitWorkflowRunError`

      The run exceeded the limit on the number of threads that a run can create.

      - `JsonElement Type = "thread_limit_error"`

      - `required string Message`

        Short explanation written by the server. It never contains content from the run or its agents.

    - `class BetaManagedAgentsMaxWorkflowRunsWorkflowRunError`

      No run was created, because the session was at its limit of open workflow runs, which are runs that have not ended. Only `workflow_run.error` carries this type.

      - `JsonElement Type = "max_workflow_runs_error"`

      - `required string Message`

        Short explanation written by the server. It never contains content from the run or its agents.

### Beta Managed Agents Workflow Run Result Stopped

- `class BetaManagedAgentsWorkflowRunResultStopped`

  The agent stopped the run.

  - `JsonElement Type = "stopped"`

### Beta Managed Agents Workflow Run Status Ended Event

- `class BetaManagedAgentsWorkflowRunStatusEndedEvent`

  A workflow run ended. Emitted once per run, as the last of the run's `workflow_run.*` events.

  - `JsonElement Type = "workflow_run.status_ended"`

  - `required string ID`

    Unique identifier for this event.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when this event was processed.

    format: date-time

  - `required BetaManagedAgentsWorkflowRunResult Result`

    How the run ended.

    - `class BetaManagedAgentsWorkflowRunResultCompleted`

      The run's plan, a program that the agent wrote, finished. This does not say whether the work succeeded.

      - `JsonElement Type = "completed"`

    - `class BetaManagedAgentsWorkflowRunResultError`

      The run failed or reached its time limit.

      - `JsonElement Type = "error"`

      - `required BetaManagedAgentsWorkflowRunError Error`

        Why the run did not finish.

        - `class BetaManagedAgentsTimeoutWorkflowRunError`

          The run reached its time limit.

          - `JsonElement Type = "timeout_error"`

          - `required string Message`

            Short explanation written by the server. It never contains content from the run or its agents.

        - `class BetaManagedAgentsProgramWorkflowRunError`

          The plan, a program that the agent wrote, failed, or the server refused it.

          - `JsonElement Type = "program_error"`

          - `required string Message`

            Short explanation written by the server. It never contains content from the run or its agents.

        - `class BetaManagedAgentsUnknownWorkflowRunError`

          A failure that has no type of its own.

          - `JsonElement Type = "unknown_error"`

          - `required string Message`

            Short explanation written by the server. It never contains content from the run or its agents.

        - `class BetaManagedAgentsThreadLimitWorkflowRunError`

          The run exceeded the limit on the number of threads that a run can create.

          - `JsonElement Type = "thread_limit_error"`

          - `required string Message`

            Short explanation written by the server. It never contains content from the run or its agents.

        - `class BetaManagedAgentsMaxWorkflowRunsWorkflowRunError`

          No run was created, because the session was at its limit of open workflow runs, which are runs that have not ended. Only `workflow_run.error` carries this type.

          - `JsonElement Type = "max_workflow_runs_error"`

          - `required string Message`

            Short explanation written by the server. It never contains content from the run or its agents.

    - `class BetaManagedAgentsWorkflowRunResultStopped`

      The agent stopped the run.

      - `JsonElement Type = "stopped"`

  - `required string WorkflowRunID`

    Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

### Beta Managed Agents Workflow Run Status Idle Event

- `class BetaManagedAgentsWorkflowRunStatusIdleEvent`

  A workflow run is idle. Emitted each time the run goes idle, whatever the cause. If the run ends while idle, no `workflow_run.status_running` comes between this event and its `workflow_run.status_ended`.

  - `JsonElement Type = "workflow_run.status_idle"`

  - `required string ID`

    Unique identifier for this event.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when this event was processed.

    format: date-time

  - `required string WorkflowRunID`

    Identifier of the run. The same value is on all of the run's `workflow_run.*` events.

### Beta Managed Agents Workflow Run Status Running Event

- `class BetaManagedAgentsWorkflowRunStatusRunningEvent`

  A workflow run is running. Emitted when the run starts to execute, and each time it resumes after being idle. A run that starts idle emits `workflow_run.status_idle` first.

  - `JsonElement Type = "workflow_run.status_running"`

  - `required string ID`

    Unique identifier for this event.

  - `required DateTimeOffset ProcessedAt`

    Timestamp when this event was processed.

    format: date-time

  - `required string WorkflowRunID`

    Identifier of the run. The same value is on all of the run's `workflow_run.*` events.
