Skip to content

[BOT ISSUE] Anthropic: Managed Agents API (client.beta.agents, client.beta.sessions) not instrumented #259

Description

@braintrust-bot

Summary

The Anthropic Managed Agents API is not instrumented. Calls to client.beta.agents.create(), client.beta.sessions.create(), and session event streaming produce zero Braintrust tracing. These are documented, production-accessible APIs on the Anthropic platform (public beta since April 8, 2026).

The Braintrust Anthropic integration wraps client.messages, client.beta.messages, and their .batches sub-resources. The Beta and AsyncBeta wrapper classes only expose a messages property — any access to client.beta.agents or client.beta.sessions falls through via Wrapper.__getattr__ to the unwrapped SDK, bypassing tracing entirely.

What is missing

Anthropic ResourceMethodInstrumented?
client.messagescreate(), stream()Yes
client.beta.messagescreate(), stream()Yes
client.messages.batchescreate(), results()Yes
client.beta.agentscreate(), retrieve(), list(), update(), delete()No
client.beta.sessionscreate(), retrieve(), list()No
client.beta.sessions.eventscreate(), stream(), list()No

Why this matters

Managed Agents is an agentic execution surface — not a CRUD management API. When a session runs, Claude autonomously executes multi-step tool-calling workflows (bash, file I/O, web search, MCP servers, code execution) with SSE-streamed events. This is functionally equivalent to the agent frameworks this repo already instruments (Pydantic AI, Agno, Google ADK, OpenAI Agents SDK, Claude Agent SDK).

At minimum, instrumentation should provide:

  • Session-level span (type task): created when a session starts, capturing agent config, model, total duration, and aggregate token usage
  • Event-level detail: user turns, assistant turns (with tool calls), tool results, status updates
  • Token metrics: prompt tokens, completion tokens, cache read/creation tokens from session usage

How the gap manifests in code

AsyncBeta (line 128) and Beta (line 188) in tracing.py:

class AsyncBeta(Wrapper):
def __init__(self, beta):
super().__init__(beta)
self.__beta = beta
@property
def messages(self):
return AsyncMessages(self.__beta.messages)
# No agents or sessions properties — falls through to Wrapper.__getattr__

Relationship to existing issues

This is the Anthropic-native equivalent of the agentic execution instrumentation already provided for:

  • OpenAI Agents SDKBraintrustTracingProcessor captures agent runs, tool calls, handoffs
  • Pydantic AIAgent.run(), tool manager, streaming instrumented
  • Claude Agent SDK — subprocess-based ClaudeSDKClient instrumented
  • AgnoAgent.run(), Team.run(), Workflow.execute() instrumented
  • Google ADKBaseAgent.run_async(), Runner.run(), flow + tool execution instrumented

Managed Agents is distinct from the Claude Agent SDK integration (#149) — the latter instruments the subprocess-based claude-agent-sdk-python package, while this API is a first-party HTTP endpoint on api.anthropic.com.

Braintrust docs status

not_found — The Anthropic integration page covers Messages API tracing, evaluations, tool use, and the gateway. No mention of Managed Agents, client.beta.agents, or session-based execution.

Upstream sources

Local files inspected

  • py/src/braintrust/integrations/anthropic/tracing.pyAsyncBeta (line 128) and Beta (line 188) only define a messages property; no agents or sessions properties; unwrapped access falls through via Wrapper.__getattr__
  • py/src/braintrust/integrations/anthropic/patchers.py — patches Anthropic.__init__ and AsyncAnthropic.__init__; no agent/session-specific patchers
  • py/src/braintrust/integrations/anthropic/integration.py — registers init patchers only
  • py/src/braintrust/integrations/anthropic/test_anthropic.py — no test cases for managed agents or sessions
  • py/noxfile.pytest_anthropic sessions test against LATEST, 0.50.0, 0.49.0, 0.48.0; no managed agents coverage

Metadata

Metadata

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    , 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
     blocks
    (function() {
    function addCopyButtons() {
    document.querySelectorAll('pre code').forEach(function(codeBlock) {
    if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
    codeBlock.parentElement.setAttribute('data-copy-added', 'true');
    var btn = document.createElement('button');
    btn.textContent = 'Copy';
    btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
    btn.onmouseover = function() { this.style.opacity = '1'; };
    btn.onmouseout = function() { this.style.opacity = '0.7'; };
    btn.onclick = function() {
    navigator.clipboard.writeText(codeBlock.textContent).then(function() {
    btn.textContent = 'Copied!';
    setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
    });
    };
    codeBlock.parentElement.style.position = 'relative';
    codeBlock.parentElement.appendChild(btn);
    });
    }
    addCopyButtons();
    // Re-run on dynamic content
    var observer = new MutationObserver(addCopyButtons);
    observer.observe(document.body, { childList: true, subtree: true });
    })();
    }
    } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
    })();
    (function(){
    try {
    var __m = "github.com";
    var __re = new RegExp('^' + "github\\.com" + '
    [BOT ISSUE] Anthropic: Managed Agents API (`client.beta.agents`, `client.beta.sessions`) not instrumented · Issue #259 · braintrustdata/braintrust-sdk-python · GitHub
    Skip to content

    [BOT ISSUE] Anthropic: Managed Agents API (client.beta.agents, client.beta.sessions) not instrumented #259

    Description

    @braintrust-bot

    Summary

    The Anthropic Managed Agents API is not instrumented. Calls to client.beta.agents.create(), client.beta.sessions.create(), and session event streaming produce zero Braintrust tracing. These are documented, production-accessible APIs on the Anthropic platform (public beta since April 8, 2026).

    The Braintrust Anthropic integration wraps client.messages, client.beta.messages, and their .batches sub-resources. The Beta and AsyncBeta wrapper classes only expose a messages property — any access to client.beta.agents or client.beta.sessions falls through via Wrapper.__getattr__ to the unwrapped SDK, bypassing tracing entirely.

    What is missing

    Anthropic ResourceMethodInstrumented?
    client.messagescreate(), stream()Yes
    client.beta.messagescreate(), stream()Yes
    client.messages.batchescreate(), results()Yes
    client.beta.agentscreate(), retrieve(), list(), update(), delete()No
    client.beta.sessionscreate(), retrieve(), list()No
    client.beta.sessions.eventscreate(), stream(), list()No

    Why this matters

    Managed Agents is an agentic execution surface — not a CRUD management API. When a session runs, Claude autonomously executes multi-step tool-calling workflows (bash, file I/O, web search, MCP servers, code execution) with SSE-streamed events. This is functionally equivalent to the agent frameworks this repo already instruments (Pydantic AI, Agno, Google ADK, OpenAI Agents SDK, Claude Agent SDK).

    At minimum, instrumentation should provide:

    • Session-level span (type task): created when a session starts, capturing agent config, model, total duration, and aggregate token usage
    • Event-level detail: user turns, assistant turns (with tool calls), tool results, status updates
    • Token metrics: prompt tokens, completion tokens, cache read/creation tokens from session usage

    How the gap manifests in code

    AsyncBeta (line 128) and Beta (line 188) in tracing.py:

    class AsyncBeta(Wrapper):
    def __init__(self, beta):
    super().__init__(beta)
    self.__beta = beta
    @property
    def messages(self):
    return AsyncMessages(self.__beta.messages)
    # No agents or sessions properties — falls through to Wrapper.__getattr__
    

    Relationship to existing issues

    This is the Anthropic-native equivalent of the agentic execution instrumentation already provided for:

    • OpenAI Agents SDKBraintrustTracingProcessor captures agent runs, tool calls, handoffs
    • Pydantic AIAgent.run(), tool manager, streaming instrumented
    • Claude Agent SDK — subprocess-based ClaudeSDKClient instrumented
    • AgnoAgent.run(), Team.run(), Workflow.execute() instrumented
    • Google ADKBaseAgent.run_async(), Runner.run(), flow + tool execution instrumented

    Managed Agents is distinct from the Claude Agent SDK integration (#149) — the latter instruments the subprocess-based claude-agent-sdk-python package, while this API is a first-party HTTP endpoint on api.anthropic.com.

    Braintrust docs status

    not_found — The Anthropic integration page covers Messages API tracing, evaluations, tool use, and the gateway. No mention of Managed Agents, client.beta.agents, or session-based execution.

    Upstream sources

    Local files inspected

    • py/src/braintrust/integrations/anthropic/tracing.pyAsyncBeta (line 128) and Beta (line 188) only define a messages property; no agents or sessions properties; unwrapped access falls through via Wrapper.__getattr__
    • py/src/braintrust/integrations/anthropic/patchers.py — patches Anthropic.__init__ and AsyncAnthropic.__init__; no agent/session-specific patchers
    • py/src/braintrust/integrations/anthropic/integration.py — registers init patchers only
    • py/src/braintrust/integrations/anthropic/test_anthropic.py — no test cases for managed agents or sessions
    • py/noxfile.pytest_anthropic sessions test against LATEST, 0.50.0, 0.49.0, 0.48.0; no managed agents coverage

    Metadata

    Metadata

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [BOT ISSUE] Anthropic: Managed Agents API (`client.beta.agents`, `client.beta.sessions`) not instrumented · Issue #259 · braintrustdata/braintrust-sdk-python · GitHub
      Skip to content

      [BOT ISSUE] Anthropic: Managed Agents API (client.beta.agents, client.beta.sessions) not instrumented #259

      Description

      @braintrust-bot

      Summary

      The Anthropic Managed Agents API is not instrumented. Calls to client.beta.agents.create(), client.beta.sessions.create(), and session event streaming produce zero Braintrust tracing. These are documented, production-accessible APIs on the Anthropic platform (public beta since April 8, 2026).

      The Braintrust Anthropic integration wraps client.messages, client.beta.messages, and their .batches sub-resources. The Beta and AsyncBeta wrapper classes only expose a messages property — any access to client.beta.agents or client.beta.sessions falls through via Wrapper.__getattr__ to the unwrapped SDK, bypassing tracing entirely.

      What is missing

      Anthropic ResourceMethodInstrumented?
      client.messagescreate(), stream()Yes
      client.beta.messagescreate(), stream()Yes
      client.messages.batchescreate(), results()Yes
      client.beta.agentscreate(), retrieve(), list(), update(), delete()No
      client.beta.sessionscreate(), retrieve(), list()No
      client.beta.sessions.eventscreate(), stream(), list()No

      Why this matters

      Managed Agents is an agentic execution surface — not a CRUD management API. When a session runs, Claude autonomously executes multi-step tool-calling workflows (bash, file I/O, web search, MCP servers, code execution) with SSE-streamed events. This is functionally equivalent to the agent frameworks this repo already instruments (Pydantic AI, Agno, Google ADK, OpenAI Agents SDK, Claude Agent SDK).

      At minimum, instrumentation should provide:

      • Session-level span (type task): created when a session starts, capturing agent config, model, total duration, and aggregate token usage
      • Event-level detail: user turns, assistant turns (with tool calls), tool results, status updates
      • Token metrics: prompt tokens, completion tokens, cache read/creation tokens from session usage

      How the gap manifests in code

      AsyncBeta (line 128) and Beta (line 188) in tracing.py:

      class AsyncBeta(Wrapper):
      def __init__(self, beta):
      super().__init__(beta)
      self.__beta = beta
      @property
      def messages(self):
      return AsyncMessages(self.__beta.messages)
      # No agents or sessions properties — falls through to Wrapper.__getattr__
      

      Relationship to existing issues

      This is the Anthropic-native equivalent of the agentic execution instrumentation already provided for:

      • OpenAI Agents SDKBraintrustTracingProcessor captures agent runs, tool calls, handoffs
      • Pydantic AIAgent.run(), tool manager, streaming instrumented
      • Claude Agent SDK — subprocess-based ClaudeSDKClient instrumented
      • AgnoAgent.run(), Team.run(), Workflow.execute() instrumented
      • Google ADKBaseAgent.run_async(), Runner.run(), flow + tool execution instrumented

      Managed Agents is distinct from the Claude Agent SDK integration (#149) — the latter instruments the subprocess-based claude-agent-sdk-python package, while this API is a first-party HTTP endpoint on api.anthropic.com.

      Braintrust docs status

      not_found — The Anthropic integration page covers Messages API tracing, evaluations, tool use, and the gateway. No mention of Managed Agents, client.beta.agents, or session-based execution.

      Upstream sources

      Local files inspected

      • py/src/braintrust/integrations/anthropic/tracing.pyAsyncBeta (line 128) and Beta (line 188) only define a messages property; no agents or sessions properties; unwrapped access falls through via Wrapper.__getattr__
      • py/src/braintrust/integrations/anthropic/patchers.py — patches Anthropic.__init__ and AsyncAnthropic.__init__; no agent/session-specific patchers
      • py/src/braintrust/integrations/anthropic/integration.py — registers init patchers only
      • py/src/braintrust/integrations/anthropic/test_anthropic.py — no test cases for managed agents or sessions
      • py/noxfile.pytest_anthropic sessions test against LATEST, 0.50.0, 0.49.0, 0.48.0; no managed agents coverage

      Metadata

      Metadata

      Projects

      No projects

        Milestone

        No milestone

        Relationships

        None yet

        Development

        No branches or pull requests

        Issue actions

        , 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [BOT ISSUE] Anthropic: Managed Agents API (`client.beta.agents`, `client.beta.sessions`) not instrumented · Issue #259 · braintrustdata/braintrust-sdk-python · GitHub
        Skip to content

        [BOT ISSUE] Anthropic: Managed Agents API (client.beta.agents, client.beta.sessions) not instrumented #259

        Description

        @braintrust-bot

        Summary

        The Anthropic Managed Agents API is not instrumented. Calls to client.beta.agents.create(), client.beta.sessions.create(), and session event streaming produce zero Braintrust tracing. These are documented, production-accessible APIs on the Anthropic platform (public beta since April 8, 2026).

        The Braintrust Anthropic integration wraps client.messages, client.beta.messages, and their .batches sub-resources. The Beta and AsyncBeta wrapper classes only expose a messages property — any access to client.beta.agents or client.beta.sessions falls through via Wrapper.__getattr__ to the unwrapped SDK, bypassing tracing entirely.

        What is missing

        Anthropic ResourceMethodInstrumented?
        client.messagescreate(), stream()Yes
        client.beta.messagescreate(), stream()Yes
        client.messages.batchescreate(), results()Yes
        client.beta.agentscreate(), retrieve(), list(), update(), delete()No
        client.beta.sessionscreate(), retrieve(), list()No
        client.beta.sessions.eventscreate(), stream(), list()No

        Why this matters

        Managed Agents is an agentic execution surface — not a CRUD management API. When a session runs, Claude autonomously executes multi-step tool-calling workflows (bash, file I/O, web search, MCP servers, code execution) with SSE-streamed events. This is functionally equivalent to the agent frameworks this repo already instruments (Pydantic AI, Agno, Google ADK, OpenAI Agents SDK, Claude Agent SDK).

        At minimum, instrumentation should provide:

        • Session-level span (type task): created when a session starts, capturing agent config, model, total duration, and aggregate token usage
        • Event-level detail: user turns, assistant turns (with tool calls), tool results, status updates
        • Token metrics: prompt tokens, completion tokens, cache read/creation tokens from session usage

        How the gap manifests in code

        AsyncBeta (line 128) and Beta (line 188) in tracing.py:

        class AsyncBeta(Wrapper):
        def __init__(self, beta):
        super().__init__(beta)
        self.__beta = beta
        @property
        def messages(self):
        return AsyncMessages(self.__beta.messages)
        # No agents or sessions properties — falls through to Wrapper.__getattr__
        

        Relationship to existing issues

        This is the Anthropic-native equivalent of the agentic execution instrumentation already provided for:

        • OpenAI Agents SDKBraintrustTracingProcessor captures agent runs, tool calls, handoffs
        • Pydantic AIAgent.run(), tool manager, streaming instrumented
        • Claude Agent SDK — subprocess-based ClaudeSDKClient instrumented
        • AgnoAgent.run(), Team.run(), Workflow.execute() instrumented
        • Google ADKBaseAgent.run_async(), Runner.run(), flow + tool execution instrumented

        Managed Agents is distinct from the Claude Agent SDK integration (#149) — the latter instruments the subprocess-based claude-agent-sdk-python package, while this API is a first-party HTTP endpoint on api.anthropic.com.

        Braintrust docs status

        not_found — The Anthropic integration page covers Messages API tracing, evaluations, tool use, and the gateway. No mention of Managed Agents, client.beta.agents, or session-based execution.

        Upstream sources

        Local files inspected

        • py/src/braintrust/integrations/anthropic/tracing.pyAsyncBeta (line 128) and Beta (line 188) only define a messages property; no agents or sessions properties; unwrapped access falls through via Wrapper.__getattr__
        • py/src/braintrust/integrations/anthropic/patchers.py — patches Anthropic.__init__ and AsyncAnthropic.__init__; no agent/session-specific patchers
        • py/src/braintrust/integrations/anthropic/integration.py — registers init patchers only
        • py/src/braintrust/integrations/anthropic/test_anthropic.py — no test cases for managed agents or sessions
        • py/noxfile.pytest_anthropic sessions test against LATEST, 0.50.0, 0.49.0, 0.48.0; no managed agents coverage

        Metadata

        Metadata

        Projects

        No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' [BOT ISSUE] Anthropic: Managed Agents API (`client.beta.agents`, `client.beta.sessions`) not instrumented · Issue #259 · braintrustdata/braintrust-sdk-python · GitHub
          Skip to content

          [BOT ISSUE] Anthropic: Managed Agents API (client.beta.agents, client.beta.sessions) not instrumented #259

          Description

          @braintrust-bot

          Summary

          The Anthropic Managed Agents API is not instrumented. Calls to client.beta.agents.create(), client.beta.sessions.create(), and session event streaming produce zero Braintrust tracing. These are documented, production-accessible APIs on the Anthropic platform (public beta since April 8, 2026).

          The Braintrust Anthropic integration wraps client.messages, client.beta.messages, and their .batches sub-resources. The Beta and AsyncBeta wrapper classes only expose a messages property — any access to client.beta.agents or client.beta.sessions falls through via Wrapper.__getattr__ to the unwrapped SDK, bypassing tracing entirely.

          What is missing

          Anthropic ResourceMethodInstrumented?
          client.messagescreate(), stream()Yes
          client.beta.messagescreate(), stream()Yes
          client.messages.batchescreate(), results()Yes
          client.beta.agentscreate(), retrieve(), list(), update(), delete()No
          client.beta.sessionscreate(), retrieve(), list()No
          client.beta.sessions.eventscreate(), stream(), list()No

          Why this matters

          Managed Agents is an agentic execution surface — not a CRUD management API. When a session runs, Claude autonomously executes multi-step tool-calling workflows (bash, file I/O, web search, MCP servers, code execution) with SSE-streamed events. This is functionally equivalent to the agent frameworks this repo already instruments (Pydantic AI, Agno, Google ADK, OpenAI Agents SDK, Claude Agent SDK).

          At minimum, instrumentation should provide:

          • Session-level span (type task): created when a session starts, capturing agent config, model, total duration, and aggregate token usage
          • Event-level detail: user turns, assistant turns (with tool calls), tool results, status updates
          • Token metrics: prompt tokens, completion tokens, cache read/creation tokens from session usage

          How the gap manifests in code

          AsyncBeta (line 128) and Beta (line 188) in tracing.py:

          class AsyncBeta(Wrapper):
          def __init__(self, beta):
          super().__init__(beta)
          self.__beta = beta
          @property
          def messages(self):
          return AsyncMessages(self.__beta.messages)
          # No agents or sessions properties — falls through to Wrapper.__getattr__
          

          Relationship to existing issues

          This is the Anthropic-native equivalent of the agentic execution instrumentation already provided for:

          • OpenAI Agents SDKBraintrustTracingProcessor captures agent runs, tool calls, handoffs
          • Pydantic AIAgent.run(), tool manager, streaming instrumented
          • Claude Agent SDK — subprocess-based ClaudeSDKClient instrumented
          • AgnoAgent.run(), Team.run(), Workflow.execute() instrumented
          • Google ADKBaseAgent.run_async(), Runner.run(), flow + tool execution instrumented

          Managed Agents is distinct from the Claude Agent SDK integration (#149) — the latter instruments the subprocess-based claude-agent-sdk-python package, while this API is a first-party HTTP endpoint on api.anthropic.com.

          Braintrust docs status

          not_found — The Anthropic integration page covers Messages API tracing, evaluations, tool use, and the gateway. No mention of Managed Agents, client.beta.agents, or session-based execution.

          Upstream sources

          Local files inspected

          • py/src/braintrust/integrations/anthropic/tracing.pyAsyncBeta (line 128) and Beta (line 188) only define a messages property; no agents or sessions properties; unwrapped access falls through via Wrapper.__getattr__
          • py/src/braintrust/integrations/anthropic/patchers.py — patches Anthropic.__init__ and AsyncAnthropic.__init__; no agent/session-specific patchers
          • py/src/braintrust/integrations/anthropic/integration.py — registers init patchers only
          • py/src/braintrust/integrations/anthropic/test_anthropic.py — no test cases for managed agents or sessions
          • py/noxfile.pytest_anthropic sessions test against LATEST, 0.50.0, 0.49.0, 0.48.0; no managed agents coverage

          Metadata

          Metadata

          Projects

          No projects

            Milestone

            No milestone

            Relationships

            None yet

            Development

            No branches or pull requests

            Issue actions

            , 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [BOT ISSUE] Anthropic: Managed Agents API (`client.beta.agents`, `client.beta.sessions`) not instrumented · Issue #259 · braintrustdata/braintrust-sdk-python · GitHub
            Skip to content

            [BOT ISSUE] Anthropic: Managed Agents API (client.beta.agents, client.beta.sessions) not instrumented #259

            Description

            @braintrust-bot

            Summary

            The Anthropic Managed Agents API is not instrumented. Calls to client.beta.agents.create(), client.beta.sessions.create(), and session event streaming produce zero Braintrust tracing. These are documented, production-accessible APIs on the Anthropic platform (public beta since April 8, 2026).

            The Braintrust Anthropic integration wraps client.messages, client.beta.messages, and their .batches sub-resources. The Beta and AsyncBeta wrapper classes only expose a messages property — any access to client.beta.agents or client.beta.sessions falls through via Wrapper.__getattr__ to the unwrapped SDK, bypassing tracing entirely.

            What is missing

            Anthropic ResourceMethodInstrumented?
            client.messagescreate(), stream()Yes
            client.beta.messagescreate(), stream()Yes
            client.messages.batchescreate(), results()Yes
            client.beta.agentscreate(), retrieve(), list(), update(), delete()No
            client.beta.sessionscreate(), retrieve(), list()No
            client.beta.sessions.eventscreate(), stream(), list()No

            Why this matters

            Managed Agents is an agentic execution surface — not a CRUD management API. When a session runs, Claude autonomously executes multi-step tool-calling workflows (bash, file I/O, web search, MCP servers, code execution) with SSE-streamed events. This is functionally equivalent to the agent frameworks this repo already instruments (Pydantic AI, Agno, Google ADK, OpenAI Agents SDK, Claude Agent SDK).

            At minimum, instrumentation should provide:

            • Session-level span (type task): created when a session starts, capturing agent config, model, total duration, and aggregate token usage
            • Event-level detail: user turns, assistant turns (with tool calls), tool results, status updates
            • Token metrics: prompt tokens, completion tokens, cache read/creation tokens from session usage

            How the gap manifests in code

            AsyncBeta (line 128) and Beta (line 188) in tracing.py:

            class AsyncBeta(Wrapper):
            def __init__(self, beta):
            super().__init__(beta)
            self.__beta = beta
            @property
            def messages(self):
            return AsyncMessages(self.__beta.messages)
            # No agents or sessions properties — falls through to Wrapper.__getattr__
            

            Relationship to existing issues

            This is the Anthropic-native equivalent of the agentic execution instrumentation already provided for:

            • OpenAI Agents SDKBraintrustTracingProcessor captures agent runs, tool calls, handoffs
            • Pydantic AIAgent.run(), tool manager, streaming instrumented
            • Claude Agent SDK — subprocess-based ClaudeSDKClient instrumented
            • AgnoAgent.run(), Team.run(), Workflow.execute() instrumented
            • Google ADKBaseAgent.run_async(), Runner.run(), flow + tool execution instrumented

            Managed Agents is distinct from the Claude Agent SDK integration (#149) — the latter instruments the subprocess-based claude-agent-sdk-python package, while this API is a first-party HTTP endpoint on api.anthropic.com.

            Braintrust docs status

            not_found — The Anthropic integration page covers Messages API tracing, evaluations, tool use, and the gateway. No mention of Managed Agents, client.beta.agents, or session-based execution.

            Upstream sources

            Local files inspected

            • py/src/braintrust/integrations/anthropic/tracing.pyAsyncBeta (line 128) and Beta (line 188) only define a messages property; no agents or sessions properties; unwrapped access falls through via Wrapper.__getattr__
            • py/src/braintrust/integrations/anthropic/patchers.py — patches Anthropic.__init__ and AsyncAnthropic.__init__; no agent/session-specific patchers
            • py/src/braintrust/integrations/anthropic/integration.py — registers init patchers only
            • py/src/braintrust/integrations/anthropic/test_anthropic.py — no test cases for managed agents or sessions
            • py/noxfile.pytest_anthropic sessions test against LATEST, 0.50.0, 0.49.0, 0.48.0; no managed agents coverage

            Metadata

            Metadata

            Projects

            No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [BOT ISSUE] Anthropic: Managed Agents API (`client.beta.agents`, `client.beta.sessions`) not instrumented · Issue #259 · braintrustdata/braintrust-sdk-python · GitHub
              Skip to content

              [BOT ISSUE] Anthropic: Managed Agents API (client.beta.agents, client.beta.sessions) not instrumented #259

              Description

              @braintrust-bot

              Summary

              The Anthropic Managed Agents API is not instrumented. Calls to client.beta.agents.create(), client.beta.sessions.create(), and session event streaming produce zero Braintrust tracing. These are documented, production-accessible APIs on the Anthropic platform (public beta since April 8, 2026).

              The Braintrust Anthropic integration wraps client.messages, client.beta.messages, and their .batches sub-resources. The Beta and AsyncBeta wrapper classes only expose a messages property — any access to client.beta.agents or client.beta.sessions falls through via Wrapper.__getattr__ to the unwrapped SDK, bypassing tracing entirely.

              What is missing

              Anthropic ResourceMethodInstrumented?
              client.messagescreate(), stream()Yes
              client.beta.messagescreate(), stream()Yes
              client.messages.batchescreate(), results()Yes
              client.beta.agentscreate(), retrieve(), list(), update(), delete()No
              client.beta.sessionscreate(), retrieve(), list()No
              client.beta.sessions.eventscreate(), stream(), list()No

              Why this matters

              Managed Agents is an agentic execution surface — not a CRUD management API. When a session runs, Claude autonomously executes multi-step tool-calling workflows (bash, file I/O, web search, MCP servers, code execution) with SSE-streamed events. This is functionally equivalent to the agent frameworks this repo already instruments (Pydantic AI, Agno, Google ADK, OpenAI Agents SDK, Claude Agent SDK).

              At minimum, instrumentation should provide:

              • Session-level span (type task): created when a session starts, capturing agent config, model, total duration, and aggregate token usage
              • Event-level detail: user turns, assistant turns (with tool calls), tool results, status updates
              • Token metrics: prompt tokens, completion tokens, cache read/creation tokens from session usage

              How the gap manifests in code

              AsyncBeta (line 128) and Beta (line 188) in tracing.py:

              class AsyncBeta(Wrapper):
              def __init__(self, beta):
              super().__init__(beta)
              self.__beta = beta
              @property
              def messages(self):
              return AsyncMessages(self.__beta.messages)
              # No agents or sessions properties — falls through to Wrapper.__getattr__
              

              Relationship to existing issues

              This is the Anthropic-native equivalent of the agentic execution instrumentation already provided for:

              • OpenAI Agents SDKBraintrustTracingProcessor captures agent runs, tool calls, handoffs
              • Pydantic AIAgent.run(), tool manager, streaming instrumented
              • Claude Agent SDK — subprocess-based ClaudeSDKClient instrumented
              • AgnoAgent.run(), Team.run(), Workflow.execute() instrumented
              • Google ADKBaseAgent.run_async(), Runner.run(), flow + tool execution instrumented

              Managed Agents is distinct from the Claude Agent SDK integration (#149) — the latter instruments the subprocess-based claude-agent-sdk-python package, while this API is a first-party HTTP endpoint on api.anthropic.com.

              Braintrust docs status

              not_found — The Anthropic integration page covers Messages API tracing, evaluations, tool use, and the gateway. No mention of Managed Agents, client.beta.agents, or session-based execution.

              Upstream sources

              Local files inspected

              • py/src/braintrust/integrations/anthropic/tracing.pyAsyncBeta (line 128) and Beta (line 188) only define a messages property; no agents or sessions properties; unwrapped access falls through via Wrapper.__getattr__
              • py/src/braintrust/integrations/anthropic/patchers.py — patches Anthropic.__init__ and AsyncAnthropic.__init__; no agent/session-specific patchers
              • py/src/braintrust/integrations/anthropic/integration.py — registers init patchers only
              • py/src/braintrust/integrations/anthropic/test_anthropic.py — no test cases for managed agents or sessions
              • py/noxfile.pytest_anthropic sessions test against LATEST, 0.50.0, 0.49.0, 0.48.0; no managed agents coverage

              Metadata

              Metadata

              Projects

              No projects

                Milestone

                No milestone

                Relationships

                None yet

                Development

                No branches or pull requests

                Issue actions

                , 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); [BOT ISSUE] Anthropic: Managed Agents API (`client.beta.agents`, `client.beta.sessions`) not instrumented · Issue #259 · braintrustdata/braintrust-sdk-python · GitHub
                Skip to content

                [BOT ISSUE] Anthropic: Managed Agents API (client.beta.agents, client.beta.sessions) not instrumented #259

                Description

                @braintrust-bot

                Summary

                The Anthropic Managed Agents API is not instrumented. Calls to client.beta.agents.create(), client.beta.sessions.create(), and session event streaming produce zero Braintrust tracing. These are documented, production-accessible APIs on the Anthropic platform (public beta since April 8, 2026).

                The Braintrust Anthropic integration wraps client.messages, client.beta.messages, and their .batches sub-resources. The Beta and AsyncBeta wrapper classes only expose a messages property — any access to client.beta.agents or client.beta.sessions falls through via Wrapper.__getattr__ to the unwrapped SDK, bypassing tracing entirely.

                What is missing

                Anthropic ResourceMethodInstrumented?
                client.messagescreate(), stream()Yes
                client.beta.messagescreate(), stream()Yes
                client.messages.batchescreate(), results()Yes
                client.beta.agentscreate(), retrieve(), list(), update(), delete()No
                client.beta.sessionscreate(), retrieve(), list()No
                client.beta.sessions.eventscreate(), stream(), list()No

                Why this matters

                Managed Agents is an agentic execution surface — not a CRUD management API. When a session runs, Claude autonomously executes multi-step tool-calling workflows (bash, file I/O, web search, MCP servers, code execution) with SSE-streamed events. This is functionally equivalent to the agent frameworks this repo already instruments (Pydantic AI, Agno, Google ADK, OpenAI Agents SDK, Claude Agent SDK).

                At minimum, instrumentation should provide:

                • Session-level span (type task): created when a session starts, capturing agent config, model, total duration, and aggregate token usage
                • Event-level detail: user turns, assistant turns (with tool calls), tool results, status updates
                • Token metrics: prompt tokens, completion tokens, cache read/creation tokens from session usage

                How the gap manifests in code

                AsyncBeta (line 128) and Beta (line 188) in tracing.py:

                class AsyncBeta(Wrapper):
                def __init__(self, beta):
                super().__init__(beta)
                self.__beta = beta
                @property
                def messages(self):
                return AsyncMessages(self.__beta.messages)
                # No agents or sessions properties — falls through to Wrapper.__getattr__
                

                Relationship to existing issues

                This is the Anthropic-native equivalent of the agentic execution instrumentation already provided for:

                • OpenAI Agents SDKBraintrustTracingProcessor captures agent runs, tool calls, handoffs
                • Pydantic AIAgent.run(), tool manager, streaming instrumented
                • Claude Agent SDK — subprocess-based ClaudeSDKClient instrumented
                • AgnoAgent.run(), Team.run(), Workflow.execute() instrumented
                • Google ADKBaseAgent.run_async(), Runner.run(), flow + tool execution instrumented

                Managed Agents is distinct from the Claude Agent SDK integration (#149) — the latter instruments the subprocess-based claude-agent-sdk-python package, while this API is a first-party HTTP endpoint on api.anthropic.com.

                Braintrust docs status

                not_found — The Anthropic integration page covers Messages API tracing, evaluations, tool use, and the gateway. No mention of Managed Agents, client.beta.agents, or session-based execution.

                Upstream sources

                Local files inspected

                • py/src/braintrust/integrations/anthropic/tracing.pyAsyncBeta (line 128) and Beta (line 188) only define a messages property; no agents or sessions properties; unwrapped access falls through via Wrapper.__getattr__
                • py/src/braintrust/integrations/anthropic/patchers.py — patches Anthropic.__init__ and AsyncAnthropic.__init__; no agent/session-specific patchers
                • py/src/braintrust/integrations/anthropic/integration.py — registers init patchers only
                • py/src/braintrust/integrations/anthropic/test_anthropic.py — no test cases for managed agents or sessions
                • py/noxfile.pytest_anthropic sessions test against LATEST, 0.50.0, 0.49.0, 0.48.0; no managed agents coverage

                Metadata

                Metadata

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions