[bot] OpenAI Responses API hosted Shell tool (shell_call) missing from server-side tool child-span list
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 80/100
- Issue-Typ
- Feature
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- java
- Bereich
- observability
Rechercherichtung
Öffne braintrust-sdk/src/main/java/dev/braintrust/instrumentation/InstrumentationSemConv.java und lies OPENAI_SERVER_SIDE_ITEM_INPUT_KEYS zusammen mit addOpenAIServerSideChildSpans, wobei du den vorhandenen code_interpreter_call-Eintrag als Vorlage verwendest; der Eingabeschlüssel für shell_call ist action. Füge dann in braintrust-sdk/src/test/java/dev/braintrust/instrumentation/InstrumentationSemConvTest.java einen Test hinzu, der emitsWebSearchCallToolSpanParentedToLlm nachbildet, und lasse local_shell_call wie computer_call ausgeschlossen. Fertig bedeutet, dass ein shell_call-Element einen untergeordneten Span mit Input-/Output-Metadaten erzeugt und der neue Test besteht.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Summary
OpenAI's Responses API added a built-in, server-executed "Hosted Shell" tool (launched Feb 10, 2026 per the official changelog). When used in hosted mode (environment.type = container_auto or container_reference), the model's shell commands are executed server-side by OpenAI inside a managed container — the same execution category as code_interpreter_call, which this repo already instruments with a dedicated child span.
This repo already has first-class support for structured per-tool child spans on Responses API output items: addOpenAIServerSideChildSpans / OPENAI_SERVER_SIDE_ITEM_INPUT_KEYS in InstrumentationSemConv.java currently cover web_search_call, file_search_call, code_interpreter_call, and mcp_call, each getting a dedicated type:"tool" child span with input/output/metadata capture (mirroring the equivalent Anthropic server-tool-use span logic). computer_call and image_generation_call are deliberately excluded, each with an explicit code comment and a dedicated test explaining why (client-executed / unredacted base64 blob respectively).
The new hosted Shell tool's output item type, "shell_call" (paired with "shell_call_output"), is not in OPENAI_SERVER_SIDE_ITEM_INPUT_KEYS and has no exclusion comment or test — it simply wasn't considered, since the tool launched after this feature was built. As a result, shell_call items fall through with no child span: no per-call input capture, no separate output/status/latency breakdown — unlike the functionally identical code_interpreter_call. (The raw item still appears in the parent span's full JSON passthrough, so data isn't entirely lost, but the structured tool-call span Braintrust's UI surfaces is missing for this tool.)
Item shapes, per official docs:
shell_call:{"type": "shell_call", "call_id": ..., "status": "in_progress", "action": {"commands": [...], "timeout_ms": ..., "max_output_length": ...}}shell_call_output:output[]entries of{stdout, stderr, outcome: {type: "exit", exit_code} | {type: "timeout"}}
Note: this is distinct from the older, always-client-executed local_shell_call (Codex-only, deprecated — per OpenAI's own docs "the API only returns instructions; it does not execute them on OpenAI infrastructure" and "for new use cases, use the current shell tool"), which correctly should remain excluded the same way computer_call is.
Braintrust docs status: supported (for the covered tool set; shell_call absent)
https://www.braintrust.dev/docs/integrations/ai-providers/openai explicitly documents, for the Java SDK: "One child span per server-side tool call (web_search_call, file_search_call, code_interpreter_call, mcp_call)." shell_call is not listed, consistent with the code gap.
Upstream sources
- https://developers.openai.com/api/docs/changelog — "Launched a new Hosted Shell tool, as well as support for networking in containers" (Feb 10, 2026).
- https://developers.openai.com/api/docs/guides/tools-shell — current hosted Shell tool documentation and item shapes.
- https://developers.openai.com/api/docs/guides/tools-local-shell — confirms the deprecated
local_shell_callis Codex-only, always client-executed, and superseded by the currentshelltool for new use cases.
Local repo files inspected
braintrust-sdk/src/main/java/dev/braintrust/instrumentation/InstrumentationSemConv.java—OPENAI_SERVER_SIDE_ITEM_INPUT_KEYS(covered types),addOpenAIServerSideChildSpans(dispatch/continue-on-unknown-type behavior), the documented exclusions forcomputer_call/image_generation_call.braintrust-sdk/src/test/java/dev/braintrust/instrumentation/InstrumentationSemConvTest.java— existing per-tool-type tests (e.g.emitsWebSearchCallToolSpanParentedToLlm),clientSideCallsAreNotSpanned,imageGenerationCallIsNotSpanned; no equivalent test or exclusion forshell_call.- Repo-wide case-insensitive search for
shell_call/local_shell_call/hosted shell/ShellToolacross source, tests, and VCR cassettes — zero matches.
Suggested fix
Add "shell_call" to OPENAI_SERVER_SIDE_ITEM_INPUT_KEYS with its input key (action), following the same pattern as web_search_call, plus a test mirroring the existing code_interpreter_call/web_search_call child-span tests. The deprecated local_shell_call should remain excluded, consistent with the computer_call exclusion.
- Vorherrschende Sprache
- Java
- Sterne
- 21
- Forks
- 5
- Ø Merge
- 1 T. 1 Std.
- Gemergte PRs (30 T.)
- 5
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus braintrustdata/braintrust-sdk-java
-
[bot] Anthropic MCP connector tool calls (mcp_tool_use/mcp_tool_result) produce broken, input-less child spansEvtl. vergeben @sarankumar1325 hat das heute übernommen. Offenbug java
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
-
java
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
Alle Issues in braintrustdata/braintrust-sdk-java
Ähnliche Issues
-
area:core bug priority:p2
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
aomarai/minecraft-mcp#247 ·
Maintainer antworten meist innerhalb von 1 Tag
-
help wanted
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
antonyrag/ragleap-core#1062 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
Vakore/ZappierGames#232 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 83/100
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 64/100
constellation-app/constellation#2588 ·