Skip to content

ValueError when finishing trace in Runner.run_streamed(): “token was created in a different Context” #538

Closed
@sarattha

Description

@sarattha

When using Runner.run_streamed() in async streaming mode, at the end of the stream the SDK crashes with:

    ValueError: <Token var=<ContextVar name='current_trace' default=None at 0x…> at 0x…> was created in a different Context

This comes from the tracing code’s Scope.reset_current_trace(token) call in Trace.finish(), because the token was set in the parent
task’s context but is being reset in the spawned Task’s context.

To Reproduce

    1. Call `Runner.run_streamed(...)` (e.g. from a FastAPI endpoint) on an agent that emits a streaming response.
    2. Consume it all, letting the stream reach completion.
    3. Observe the exception in the server logs.

Expected behavior
The trace should clean up without raising a ValueError, or tracing should be disabled automatically for streaming if it can’t safely reset in the child Task.

Traceback

    File ".../agents/tracing/scope.py", line 49, in reset_current_trace
        _current_trace.reset(token)
    ValueError: <Token var=<ContextVar name='current_trace' default=None at 0x…> at 0x…> was created in a different Context

Environment

    * openai‑agents‑python version: 0.0.11
    * Python: 3.13.2 on macOS (aarch64)
    * starlette / fastapi / uvicorn versions: 0.34.1

Additional context
run_streamed() does:

    1. `new_trace = trace(...); new_trace.start(mark_as_current=True)`
    2. `asyncio.create_task(_run_streamed_impl(...))`
    3. When the child task ends, `stream_events()` calls `trace.finish(reset_current=True)`, using the token created in the parent
context. Python’s ContextVar API refuses to reset with a token from another context.

Suggested fix
Either:

    * Don’t call `reset_current_trace()` in the worker Task (or catch/reset appropriately),
    * Or capture and re‐apply the correct ContextVar in the spawned Task,
    * Or disable tracing by default in `run_streamed()` if it can’t guarantee same context.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions