Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
473 commits
Select commit Hold shift + click to select a range
ae84ca1
fix: suppress pydantic serializer warnings (#4291)
seratch Aug 7, 2026
2221313
feat: add implementation kickoff skill
seratch Aug 7, 2026
9e2770c
chore: improve release and review workflows
seratch Aug 7, 2026
d9a384b
fix(sandbox): restore archived file modes when extracting a workspace…
hsusul Aug 8, 2026
5f5c773
fix(models): convert input_file items that reference a file_id on the…
hsusul Aug 8, 2026
d3830f7
fix(realtime): compute G.711 audio length for typed and mapping forma…
abhay-codes07 Aug 8, 2026
f30f7ba
fix(sandbox): keep source entry metadata when lazily loading a skill …
hsusul Aug 8, 2026
fd4db56
chore: strengthen maintainer review probes and practical-impact gating
seratch Aug 8, 2026
4da5ddb
docs(skills): formalize finding-derived complexity resets
seratch Aug 8, 2026
ef1d202
fix(memory): preserve falsey compaction decision hooks (#4299)
hsusul Aug 8, 2026
98c3637
Fix falsy optional reference handling (#4305)
seratch Aug 8, 2026
f5d20e5
docs: improve translation source clarity (#4306)
seratch Aug 8, 2026
39d1529
fix(chat-completions): raise on audio output in the streamed chat com…
Luccacvb Aug 8, 2026
347fec1
docs: update translated pages
seratch Aug 8, 2026
f3ad9f3
fix(sessions): restore session history when compaction replacement is…
nothariharan Aug 8, 2026
c761dd6
fix: keep FunctionTool subclasses copyable (#4311)
seratch Aug 8, 2026
cdde4d6
fix(run): preserve streamed guardrail session state (#4312)
seratch Aug 8, 2026
1d7c4b8
fix(sandbox): reject unsafe mount credential configurations (#4255)
seratch Aug 9, 2026
b79bf94
fix(modal): settle snapshot directory mount transitions (#4315)
seratch Aug 9, 2026
dcd1705
fix(run_state): keep acknowledged safety checks serializable after re…
ribhavjain Aug 9, 2026
2b115b6
fix: preserve free-form MCP object schemas (#4310)
seratch Aug 9, 2026
5d33249
docs: adjust the documentation policies
seratch Aug 9, 2026
d619466
fix(run_state): preserve default-valued fields in serialized tool out…
hsusul Aug 9, 2026
aec2dfa
fix(items): strip output-only created_by when replaying model output …
hsusul Aug 9, 2026
8bf878a
docs: clarify the docs change timing in PRs
seratch Aug 9, 2026
a654828
perf: streamline implementation final review
seratch Aug 9, 2026
4d29c44
docs: update sandbox reference for agents
seratch Aug 9, 2026
6115461
feat(retry): allow applications to approve unsafe replays (#4319)
seratch Aug 9, 2026
47498d4
fix: preserve local shell outputs across RunState resume (#4320)
seratch Aug 9, 2026
2eeb860
perf: validate final review protocol artifacts
seratch Aug 9, 2026
192e6c7
feat: add explicit mount credential exposure acknowledgements (#4321)
seratch Aug 9, 2026
7bf73af
feat: add durable pending input to RunState (#4325)
seratch Aug 9, 2026
443e1f5
fix: prune orphaned tool outputs from limited sessions (#4324)
seratch Aug 9, 2026
e3d7c17
fix(litellm): omit parallel_tool_calls without tools (#4330)
seratch Aug 9, 2026
9775b5e
fix(mcp): serialize non-text content blocks as JSON instead of Python…
ribhavjain Aug 9, 2026
54f3f73
fix(run_state): serialize containers of models and dataclasses as str…
ribhavjain Aug 9, 2026
020db0a
fix: allow post-completion review feedback cycles
seratch Aug 9, 2026
7da5696
fix(mcp): serialize manager lifecycle operations (#4340)
seratch Aug 9, 2026
54cc7d9
fix(mcp): bound lifecycle and CI waits (#4342)
seratch Aug 10, 2026
afd1119
fix(voice): report transcription session close failures to the consum…
Luccacvb Aug 10, 2026
9a8ecd2
fix: preserve sandbox error contracts during mount redaction (#4344)
seratch Aug 10, 2026
8cb02cb
perf: defer broad verification until review is clean
seratch Aug 10, 2026
3b62591
test: harden release compatibility contracts (#4297)
seratch Aug 10, 2026
92de6cf
feat: add local release candidate preparation
seratch Aug 10, 2026
2e3aa55
ci: check prospective release contracts before merge (#4347)
seratch Aug 10, 2026
8979f88
refactor: gate release readiness before branch creation
seratch Aug 10, 2026
92ca194
refactor: adjust the final release review when cutting a new version
seratch Aug 10, 2026
b3427dc
fix: bootstrap release prep dependencies
seratch Aug 10, 2026
ea5653a
fix: make release API contract promotion policy-driven (#4349)
seratch Aug 10, 2026
ee395e2
test: isolate released API source validation (#4350)
seratch Aug 10, 2026
6849766
fix: freeze Runloop platform properties (#4355)
seratch Aug 10, 2026
a5def04
feat(realtime): support GA transcription options (#4351)
seratch Aug 10, 2026
67e6d37
fix: refresh release candidates consistently
seratch Aug 10, 2026
cda89c8
fix: freeze new public submodule callables
seratch Aug 10, 2026
2231eb5
fix: reject schemas that exceed safe recursion depth (#4358)
seratch Aug 11, 2026
b2a460d
chore: preserve review credit for verified type-erasure edits
seratch Aug 11, 2026
23da2b6
fix(chat-completions): omit parallel_tool_calls without tools on the …
Luccacvb Aug 11, 2026
27c1060
fix: reject unsafe strict-schema ref siblings (#4356)
seratch Aug 11, 2026
c0b8763
perf: limit mypy to runtime source
seratch Aug 11, 2026
d2bda3f
release: 0.20.0 (#4348)
seratch Aug 11, 2026
80e1baa
docs: synchronize v0.20.0 features (#4280)
seratch Aug 11, 2026
7518f36
docs: update translated pages
seratch Aug 11, 2026
8ecdac5
perf: streamline final review evidence reuse
seratch Aug 11, 2026
863b96c
fix(voice): honor WAV sample width (#4361)
FU-max-boop Aug 11, 2026
b75d466
fix(extensions): gate AnyLLM parallel tool calls on converted tools (…
weivwang Aug 11, 2026
e9998af
fix(mcp): isolate manager lifecycle results (#4368)
hsusul Aug 11, 2026
3c6622d
fix(sessions): handle zero conversation history limits (#4365)
hsusul Aug 11, 2026
d5b27bb
fix(apply-diff): apply stacked anchors sequentially (#4369)
seratch Aug 11, 2026
6beab35
fix(voice): reject incomplete multichannel audio frames (#4370)
seratch Aug 11, 2026
dd34097
fix(runner): close the model stream when a streamed turn ends in a te…
Luccacvb Aug 12, 2026
39c3a3b
docs: clarify PGP key location (#4371)
jaideeppyne Aug 12, 2026
5250cb8
fix(voice): reject non-positive audio channels (#4372)
hansu650 Aug 12, 2026
c12f14d
feat(sandbox): let managed_secrets reference existing Runloop secrets…
xumaple Aug 12, 2026
0fc268e
fix(mcp): add configurable retry backoff ceiling (#4379)
seratch Aug 13, 2026
05d6850
feat: add scripted model test utilities (#4362)
seratch Aug 13, 2026
fc461ee
feat: support OpenAI Python 3 and HTTPX2 (#4380)
seratch Aug 13, 2026
f251c70
fix(run-state): isolate interruption results (#4384)
hsusul Aug 13, 2026
6bef354
fix(voice): reject non-positive audio frame rates (#4382)
hsusul Aug 13, 2026
66ae98f
fix: freeze public testing module contracts (#4386)
seratch Aug 13, 2026
1816d2e
docs: scale verification by change risk
seratch Aug 13, 2026
95f1c7c
fix(codex): preserve resume argument ordering (#4400)
viyatb-oai Aug 13, 2026
079e745
fix(sandbox): snapshot HTTP proxy headers (#4397)
hsusul Aug 13, 2026
15989e5
fix(sandbox): snapshot per-op audit policies (#4398)
hsusul Aug 13, 2026
761fcd9
fix(tools): redact tool output value from output-type validation erro…
hsusul Aug 14, 2026
4c7713b
fix(mcp): protect manager lifecycle state snapshots (#4407)
seratch Aug 14, 2026
c881417
fix: freeze public testing API state contracts (#4404)
seratch Aug 14, 2026
dc1bef7
fix: expose the scripted sandbox session type (#4406)
seratch Aug 14, 2026
f560693
fix: align Responses parallel tool calls with converted tools (#4405)
seratch Aug 14, 2026
fc2be56
fix(voice): stop buffering audio when audio tracing is disabled (#4411)
rxits Aug 14, 2026
40927c9
fix: max-turn handler session semantics (#4412)
seratch Aug 14, 2026
95f9d9a
fix: detach RunState interruption snapshots (#4409)
seratch Aug 14, 2026
3e87dc8
test: order test spans by start sequence, not by started_at alone (#4…
ErenAta16 Aug 14, 2026
0b93ce8
fix: isolate RunState checkpoint tool decisions (#4413)
seratch Aug 14, 2026
50d65f6
fix: resume recursive agent tool approvals (#4414)
seratch Aug 14, 2026
c0f2ff7
fix: preserve scripted annotation streaming across Python SDK release…
apcha-oai Aug 14, 2026
4e5e7b2
fix(realtime): handle non-finite audio rates (#4419)
hsusul Aug 14, 2026
2b2d7fe
fix(mcp): stop handing the tools cache to callers (#4424)
chinmayv095 Aug 14, 2026
1a0c088
fix(sandbox): honor view_image extra path grants (#4417)
sylvesterkaczmarek Aug 15, 2026
25aa6d9
release: 0.21.0 (#4387)
seratch Aug 15, 2026
55bb0b1
docs: updates for v0.21.0 release (#4381)
seratch Aug 15, 2026
56783dd
docs: update translated pages
seratch Aug 15, 2026
e4cbad9
docs: place testing after tracing in sidebar
seratch Aug 15, 2026
6b62225
fix(core): reject partially matched stacked anchors (#4431)
Coiggahou2002 Aug 15, 2026
9aba900
fix(sandbox): keep model paths POSIX-normalized (#4416)
sylvesterkaczmarek Aug 15, 2026
7ab35c3
fix(core): close all MultiProvider children after failures (#4438)
fszcd Aug 15, 2026
1c3b720
docs: list Tuning Engines tracing integration (#4440)
cerebrixos Aug 15, 2026
583fede
fix(sessions): include compaction usage in run totals (#4446)
seratch Aug 15, 2026
60482a3
fix(chat-completions): improve Chat Completions reasoning replay (#4432)
seratch Aug 15, 2026
e90df39
fix: update cffi lock for Python 3.14 (#4448)
seratch Aug 15, 2026
05c789f
fix(sandbox): normalize apply_patch paths as POSIX (#4437)
sylvesterkaczmarek Aug 15, 2026
dde0bc9
fix: honor exact call approval decisions (#4447)
seratch Aug 15, 2026
cb8a2e7
feat: add run-scoped sandbox working directories (#4427)
seratch Aug 15, 2026
94da8ed
fix(core): count Responses requests without usage (#4453)
seratch Aug 16, 2026
2588d15
fix: prevent advanced SQLite structure table conflicts (#4454)
seratch Aug 16, 2026
b4faf70
feat(core): add model call timeouts (#4428)
seratch Aug 16, 2026
3a888de
feat(extensions): add Modal sandbox resource options (#4455)
Filimoa Aug 16, 2026
2f1c83d
feat(sandbox): allow Docker sandboxes to disable networking (#4452)
koadegno Aug 16, 2026
e5f75fd
fix(realtime): truncate audio at zero elapsed time (#4457)
Chirag6722 Aug 16, 2026
fdcec69
fix: forward Docker network mode in security test
seratch Aug 16, 2026
4cb461a
fix(sandbox): validate view_image raster content (#4462)
seratch Aug 16, 2026
2632043
fix(realtime): end iteration after clean server close (#4461)
seratch Aug 16, 2026
b01ea1d
release: 0.21.1 (#4467)
seratch Aug 16, 2026
86b3db5
docs: document v0.21.1 runtime behavior (#4460)
seratch Aug 16, 2026
39327d7
docs: update translated pages
seratch Aug 16, 2026
37a7aa2
fix(sandbox): require apply_patch update hunks (#4470)
li2631026381-alt Aug 17, 2026
d40f5d9
ci: align Python version coverage (#4475)
seratch Aug 17, 2026
9ecfdfa
test: use sys.executable instead of tee in tests (#4478)
ErenAta16 Aug 17, 2026
f5491c5
docs: correct Agent.clone list attribute semantics (#4474)
thegoodengineer Aug 17, 2026
057ab10
fix(core): preserve Griffe logger inheritance (#4494)
sylvesterkaczmarek Aug 17, 2026
a77d37e
fix(core): reject ignored explicit-client options for OpenAIProvider …
sylvesterkaczmarek Aug 17, 2026
62f02e3
fix(tracing): respect model-data logging redaction for record_model_e…
sylvesterkaczmarek Aug 17, 2026
e583182
fix(sandbox): enforce Windows mypy compatibility (#4499)
seratch Aug 17, 2026
c5f6a71
fix(tracing): clean up processors after tracing is disabled (#4502)
sylvesterkaczmarek Aug 17, 2026
1a4cfa2
fix: harden agent workflow validation
seratch Aug 17, 2026
9648a40
fix: make runtime probe approval explicit in skills
seratch Aug 18, 2026
82e3571
refactor: move workflow execution out of repository skills
seratch Aug 18, 2026
ebb746d
fix: keep Codex verification for development sandboxed (#4508)
seratch Aug 18, 2026
32e4526
ci: change windows ci configuration for stability
seratch Aug 18, 2026
21a1f9b
fix: avoid Windows integration bootstrap crashes
seratch Aug 18, 2026
2c55603
test: make stream event ordering deterministic
seratch Aug 18, 2026
ed644fc
fix(core): redact blocked tool outputs from replay state (#4507)
seratch Aug 19, 2026
36dbc36
docs: add testing resources to llms indexes (#4509)
teachershuang Aug 19, 2026
0486792
fix(core/extensions): reject terminal failed/incomplete responses in …
weike-zhang Aug 19, 2026
9432f7e
fix(visualization): expand handoff() targets in agent graphs (#4517)
hsusul Aug 19, 2026
fb8fa1b
fix(core): isolate usage between RunState checkpoints (#4479)
chiruu12 Aug 19, 2026
4df9ecf
release: 0.22.0 (#4523)
seratch Aug 19, 2026
727e729
docs: document v0.22.0 behavior changes (#4522)
seratch Aug 19, 2026
aee76c8
docs: fix wording in handoff example prompts (#4520)
Chair403 Aug 19, 2026
629f9b5
fix(core): detach aggregated request usage entries (#4519)
green3sf Aug 19, 2026
fe34ba3
fix(visualization): preserve nodes with duplicate names (#4512)
tandede Aug 19, 2026
3e0dc82
docs: update translated pages
seratch Aug 19, 2026
7e55afc
fix(voice) reject ignored explicit-client options (#4527)
sylvesterkaczmarek Aug 19, 2026
bfb981d
fix(core/voice): honor OpenAI provider options over default clients (…
green3sf Aug 20, 2026
9fd6c81
fix(voice): include current OpenAI TTS voices (#4535)
sylvesterkaczmarek Aug 20, 2026
2af9472
fix: keep checkout line endings LF
seratch Aug 20, 2026
75d6a6f
chore: update review policies for runtimne validation code changes
seratch Aug 20, 2026
502bccd
fix(tracing): flush buffered data after tracing is disabled (#4528)
sylvesterkaczmarek Aug 20, 2026
eb3a5d5
fix(mcp): deep-copy cached tools before returning them (#4525)
hsusul Aug 20, 2026
e26a7d8
fix(chat-completions): raise ModelBehaviorError on truncated empty co…
weike-zhang Aug 20, 2026
f73e747
fix(voice): support custom OpenAI TTS voice IDs (#4541)
sylvesterkaczmarek Aug 20, 2026
1b7eb28
fix(core): fail closed on empty tool arguments (#4545)
hsusul Aug 20, 2026
17ba331
fix(extensions): nest extra_body on the any-llm chat path (#4544)
hsusul Aug 20, 2026
077ec65
chore: clarify edge-case policies
seratch Aug 21, 2026
7074570
chore: refine repo skills
seratch Aug 21, 2026
4c2810c
feat(sandbox): allow labels on Docker sandbox containers (#4564)
seanxuu Aug 21, 2026
119ad2a
fix(voice): forward streamed STT language and prompt (#4574)
seratch Aug 21, 2026
d222344
fix(voice): honor client config for streamed STT (#4575)
seratch Aug 21, 2026
4ccc32e
test: update auto-run list
seratch Aug 22, 2026
904bc69
test: stabilize release integration tests
seratch Aug 22, 2026
60c2c41
docs: preserve English heading anchors in translated pages (#4580)
saime428 Aug 22, 2026
5f6a733
chore: update review skill details
seratch Aug 22, 2026
5b8f6c7
fix: freeze the public voice API contract (#4578)
seratch Aug 22, 2026
3e67155
fix(mcp): clear active MCP servers after cleanup (#4586)
sylvesterkaczmarek Aug 22, 2026
7f7a44f
docs: updated heading anchors in translated pages
seratch Aug 22, 2026
4f7c1d6
fix(realtime): advance crossed guardrail thresholds (#4590)
hsusul Aug 22, 2026
042d84a
fix(mcp): deduplicate managed servers (#4591)
hsusul Aug 22, 2026
8cd1f5e
fix(core): strip created_by when replaying RunItems as input (#4568)
hsusul Aug 22, 2026
9da8f49
fix(voice): use monotonic STT event deadlines (#4593)
seratch Aug 22, 2026
89fab0f
feat: customize output guardrail blocked messages (#4594)
seratch Aug 22, 2026
2334679
fix: enforce public type alias contract coverage (#4595)
seratch Aug 23, 2026
f81c322
fix(core): strict_schema error message, REPL whitespace input, debug …
simpleqt Aug 23, 2026
1a55d70
fix(core): max_turns no longer clobbers a tripped input guardrail exc…
shoemoney Aug 23, 2026
72b2c67
fix(sandbox): finish dependency cleanup on cancellation (#4607)
hsusul Aug 23, 2026
b354ef0
fix(core): preserve serialized approval resume ownership (#4613)
seratch Aug 24, 2026
fe45b41
chore: clarify review points for agents
seratch Aug 24, 2026
7abe154
fix: make lint error
seratch Aug 24, 2026
c8b0a92
fix(core): read tool args without Pydantic property shadowing (#4627)
hsusul Aug 24, 2026
e87236e
feat(mcp): add server-wide guardrails to MCP tools (#4632)
seratch Aug 24, 2026
6268f43
docs: refresh tracing integration links (#4634)
seratch Aug 24, 2026
40f0d9f
fix(sessions): recover failed resumed Session writes before model cal…
seratch Aug 24, 2026
150a4f4
fix(voice): support context in single-agent workflow (#4636)
sylvesterkaczmarek Aug 25, 2026
91f8c49
feat(sandbox): add configurable Unix-local environment isolation (#4640)
seratch Aug 25, 2026
f265bae
fix(tracing): preserve response IDs in redacted traces (#4641)
seratch Aug 25, 2026
48c2ee4
docs: clarify capability visibility and authorization (#4642)
seratch Aug 25, 2026
9d1f4ea
fix: enforce public Voice class state coverage (#4644)
seratch Aug 25, 2026
af3e28a
docs: update translated pages
seratch Aug 25, 2026
36976b1
fix(realtime): preserve item status on retrieved conversation items (…
shoutoutuoadi325 Aug 25, 2026
1cd8303
fix(core): accept JSON Schema type arrays of object for tool outputs …
hsusul Aug 25, 2026
a624e17
fix(sessions): recover failed resumed Session writes on a renewed int…
ayaangazali Aug 25, 2026
5f9f4f0
feat(voice): expose streamed transcription options (#4645)
seratch Aug 25, 2026
1df6e81
fix(voice): redact STT prompts from traces (#4663)
hsusul Aug 26, 2026
18de651
fix(core): honor End of File hunks when the file ends in a newline (#…
lllakshit Aug 26, 2026
3603dc9
fix(sessions): persist resumed tool guardrail results (#4654)
FU-max-boop Aug 26, 2026
e773b15
fix(core): preserve tuple annotations for variadic tool arguments (#4…
Excelius-Wang Aug 26, 2026
a40ae98
fix(ci): consolidate Docker-backed integration tests (#4667)
seratch Aug 26, 2026
10cdae4
[agents] Reject unpaired function outputs in Chat Completions (#4699)
apcha-oai Aug 27, 2026
1ce2739
fix(core): fix streamed response span losing response/input when cons…
XuQuanxin04 Aug 27, 2026
494ea59
fix(sandbox): keep unbounded UnixLocal workspace I/O off the event lo…
ayaangazali Aug 27, 2026
1749d36
fix(core): apply **kwargs value annotation to each keyword value (#4714)
abhay-codes07 Aug 27, 2026
374b54d
fix(sandbox/extensions): preserve UTF-8 boundaries in Cloudflare SSE …
Hughhhhcoder Aug 27, 2026
0981432
fix(voice): redact TTS instructions from speech spans (#4676)
ayaangazali Aug 27, 2026
2b81a9e
fix(core): reject **kwargs keys that collide with named tool paramete…
rajarshidattapy Aug 27, 2026
287594c
fix(sessions): recover resumed handoffs after session append failures…
seratch Aug 28, 2026
f1a806a
fix(ci): harden PyPI publishing and require manual release tags (#4726)
seratch Aug 28, 2026
38636a5
fix(chat-completions): merge a streamed turn's message into its pendi…
mmjerge Aug 28, 2026
89c02c8
fix(core): reject fixed-length tuple annotations for variadic tool ar…
subhashpolisetti Aug 28, 2026
9ab4ab6
chore(deps): bump actions/download-artifact from 4.3.0 to 8.0.1 (#4802)
dependabot[bot] Sep 5, 2026
f1f3503
chore(deps): bump actions/upload-artifact from 4.6.2 to 7.0.1 (#4803)
dependabot[bot] Sep 5, 2026
c25e63d
docsL simplify examples page and remove navigation entries
seratch Sep 5, 2026
3e0e893
chore: simplify repository guidance and adjust review skill details
seratch Sep 5, 2026
364b953
perf: reduce async stability command startup overhead (#4874)
seratch Sep 5, 2026
e4500f9
test: make async progress and trace-worker tests deterministic (#4875)
seratch Sep 5, 2026
4a11d20
refactor: extract RunState agent graph identity (#4876)
seratch Sep 5, 2026
f22fb0c
refactor: share provider generation-span population (#4877)
seratch Sep 5, 2026
ae81399
refactor: separate release contract verification responsibilities (#4…
seratch Sep 5, 2026
f1ffb3d
test: organize Realtime session tests by responsibility (#4879)
seratch Sep 5, 2026
36b38b8
chore: run repository skill tests in dedicated CI (#4881)
seratch Sep 5, 2026
1d471a4
fix: route verification changes and require confirmed docs-only pushe…
seratch Sep 5, 2026
ba18044
fix(tracing): record the tool output on approval-gated function spans…
dfedoryshchev Sep 7, 2026
29d441b
fix(sessions): settle conversation deletion before propagating cancel…
Excelius-Wang Sep 7, 2026
3936265
chore: strengthen maintainer review of behavior changes and compatibi…
seratch Sep 7, 2026
624bb35
docs: skip reference pages on Windows (#4761)
sylvesterkaczmarek Sep 7, 2026
2bbe535
fix(sessions): preserve concurrent writes during compaction (#4736)
seratch Sep 7, 2026
1e5f3ae
test(sandbox): skip unavailable Windows symlinks (#4853)
sylvesterkaczmarek Sep 7, 2026
020e5ab
fix(voice): wake stream when producer is cancelled (#4825)
Hughhhhcoder Sep 7, 2026
a49535a
fix(extensions): skip AdvancedSQLiteSession usage store when the bran…
rioyu123 Sep 7, 2026
0567c1b
fix(voice): accept every NumPy spelling of a supported TTS dtype (#4778)
Nikhils-G Sep 7, 2026
b4e6020
fix: propagate the serial test runner's exit code on Windows (#4771)
MohammedAlkindi Sep 7, 2026
fe83572
fix(sandbox): clean up PTY startup cancellation (#4750)
Hughhhhcoder Sep 7, 2026
79d07ab
fix(core): preserve Field constraints on variadic tool parameters (#4…
rioyu123 Sep 7, 2026
e516331
fix(sessions): reject resuming a run whose accepted terminal output w…
Ayushraj06-bit Sep 7, 2026
67169f6
feat: support image results in web search tools (#4898)
seratch Sep 7, 2026
4d6a110
docs: clarify database driver installation for SQLAlchemy sessions (#…
rioyu123 Sep 7, 2026
611b18d
fix(core): close model providers created by Runner (#4785)
Excelius-Wang Sep 7, 2026
b109f48
fix(sandbox): settle PTY output before cleanup (#4738)
seratch Sep 7, 2026
d3761b3
fix: require complete policy for new public TypedDicts (#4900)
seratch Sep 7, 2026
a611596
docs(dapr): clarify requested state consistency guarantees (#4903)
rksharma-owg Sep 7, 2026
cb808df
docs: make GitHub-ready reports portable and copy-safe
seratch Sep 7, 2026
02c205f
docs: make the encrypted session quick start self-contained (#4909)
rioyu123 Sep 8, 2026
ba1e774
fix(sandbox): preserve workdir for shell command lists
hsusul Sep 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .agents/references/local-mcp-server-lifecycle.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ Use this reference for changes to Python-managed MCP servers, `MCPServerManager`
- A local `MCPServer` owns its transport, `ClientSession`, and `AsyncExitStack` from `connect()` through `cleanup()`. Partial connection failure still requires closing every context already entered.
- Some MCP transports use AnyIO cancel scopes that require connection and cleanup in the same task. Do not wrap either operation in a helper that silently creates another task.
- `MCPServerManager` preserves task affinity in sequential mode and uses one long-lived worker task per server in parallel mode. Timeouts must run inside that owning task; on Python versions without `asyncio.timeout()`, cancel the current worker task and translate only timer-originated cancellation to `TimeoutError`.
- `MCPServerManager` lifecycle timeouts are validated during construction and assignment. They accept positive finite seconds or `None` to disable the timeout. Reject zero rather than relying on `asyncio.timeout(0)`, whose immediate deadline can depend on whether the lifecycle coroutine yields control. Parallel workers receive the current timeout with each command instead of retaining a stale snapshot.
- `client_session_timeout_seconds` uses positive finite values representable by `datetime.timedelta` and at least one microsecond for MCP read timeouts. Both `None` and zero disable that timeout; reject other values during server construction instead of passing an immediate or invalid deadline to `ClientSession`.
- Cleanup runs servers in reverse order and continues across ordinary cleanup failures. Cancellation suppression is an explicit manager policy; do not accidentally convert unrelated `BaseException` failures into recoverable connection errors.
- Server cleanup must clear session and transport-visible state even when exit-stack cleanup raises, so the same server object can reconnect without exposing stale session handles or workers.

Expand Down
21 changes: 15 additions & 6 deletions .agents/references/model-provider-boundaries.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,18 @@ Do not infer that a feature available in one adapter is supported by every `Mode

Validate capabilities at the adapter boundary where the resolved model and complete request are known. Avoid public flags that appear accepted by the SDK but are silently dropped before the provider request.

## Provider Validation and Error Ownership

Do not duplicate provider-side request validation in the SDK merely to fail earlier. When the provider already rejects an invalid value with an actionable error, preserve that single source of truth instead of copying provider grammar, length limits, enum membership, or other request constraints into SDK runtime code. Duplicated validation can drift as provider contracts evolve, can reject values accepted by another provider, and can turn a provider-neutral SDK type into an accidental provider-specific contract.

Add SDK-side validation only when it enforces an SDK-owned invariant or prevents a concrete risk that provider validation cannot address. Examples include ambiguous local routing, collisions before request serialization, invalid persisted state, unsafe local side effects, or a provider error that cannot identify the offending SDK input. A generic preference for earlier failure or a different error message is not sufficient.

When local validation is justified and the constraint is provider-specific, keep it at the owning adapter boundary and derive it from an authoritative provider contract. Do not apply it to shared `Model` interfaces, provider-neutral tool types, or third-party adapters. Tests should distinguish the SDK-owned invariant from values that are intentionally left for the provider to validate.

## Provider Data and Terminal Semantics

- Preserve provider-supplied string IDs, request IDs, usage, and opaque provider data when the public SDK contract exposes them.
- Normalize provider objects and mapping payloads without relying on truthiness for valid empty or zero values.
- Normalize provider objects and mapping payloads without relying on truthiness for valid empty or zero values. When a field intentionally treats zero like `None`, make that field-specific contract explicit in the normalization, documentation, and tests rather than applying a generic optional-number rule.
- A transport stream ending is not automatically a successful model response. Responses `failed` and `incomplete` terminals, explicit error events, and a missing terminal payload must produce the documented failure behavior in both HTTP and websocket paths.
- Keep semantically equivalent HTTP, websocket, streaming, and non-streaming paths aligned on final `ModelResponse`, errors, request IDs, and usage.

Expand All @@ -55,11 +63,12 @@ Validate capabilities at the adapter boundary where the resolved model and compl
## Review Checklist

1. Identify which adapter owns the feature and how unsupported adapters behave.
2. Verify model and implicit-settings resolution when run config overrides the agent.
3. Compare HTTP/websocket and streaming/non-streaming terminal behavior when applicable.
4. Preserve request IDs, usage, provider data, and error semantics through normalization.
5. Prove retries are safe for the request's state ownership and side effects.
6. Test transport reuse, cross-loop access, closed-loop pruning, and provider shutdown when persistent connections are involved.
2. Before adding validation, determine whether it protects an SDK-owned invariant or only duplicates an actionable provider error.
3. Verify model and implicit-settings resolution when run config overrides the agent.
4. Compare HTTP/websocket and streaming/non-streaming terminal behavior when applicable.
5. Preserve request IDs, usage, provider data, and error semantics through normalization.
6. Prove retries are safe for the request's state ownership and side effects.
7. Test transport reuse, cross-loop access, closed-loop pruning, and provider shutdown when persistent connections are involved.

## Sources

Expand Down
4 changes: 4 additions & 0 deletions .agents/references/sandbox-runtime-boundary.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ Resolve the session source in this order: injected live session, resumable sandb
## Filesystem Trust Boundary

- Manifest entry destinations are workspace-relative and must not escape the workspace. The workspace root itself must be absolute where the backend requires an absolute runtime root.
- Treat every path visible inside a sandbox as a POSIX path, regardless of the host operating system. Do not use `str(Path(...))` or `str(PurePath(...))` to produce, validate, compare, or serialize a sandbox path because those calls emit backslashes on Windows. Convert typed path objects with `PurePath.as_posix()` or the canonical helpers in `workspace_paths.py`.
- Preserve the trust distinction between typed path objects and raw string input. A native Windows `Path` or `PurePath` may be converted to its POSIX sandbox representation, while a raw string containing backslashes may still need to be rejected when the public contract requires explicit POSIX syntax. Do not make an input-validation failure disappear by silently canonicalizing every string.
- Keep host filesystem conversion at an explicit host/backend boundary. Code that resolves manifests, mount targets, archive exclusions, snapshots, grants, or provider paths must not let the host implementation of `Path` change the identity of a sandbox path.
- `LocalFile` and `LocalDir` sources are host-side inputs. Resolve them against a trusted base directory, require explicit application-controlled `extra_path_grants` outside that base, and reject untrusted manifests that try to authorize their own host access.
- Validate local sources at use time, not only when parsing the manifest. Defend against symlinked sources, parent-directory swaps, platform path aliases, and archive members that change meaning between validation and extraction.
- Archive extraction must reject traversal, unsafe links, and unsupported member types before writing, and enforce entry, byte, and expansion limits without materializing an unbounded member list.
Expand Down Expand Up @@ -59,6 +62,7 @@ Provider adapters may deliberately support a narrower lifecycle. Document that b
3. Verify handoffs, duplicate agent names, interruption resume, and cleanup failure preserve the intended session mapping.
4. Test host-path, symlink, traversal, archive-limit, and credential-redaction boundaries on applicable platforms.
5. Exercise the public `Runner` path so agent preparation, capability binding, persistence, and cleanup run together.
6. For every new sandbox-path validation, normalization, comparison, or serialization path, test a `PureWindowsPath` input on every host and confirm that raw backslash strings retain their intended validation behavior.

## Sources

Expand Down
2 changes: 2 additions & 0 deletions .agents/references/tool-identity.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ One tool can have several related identifiers. They are not interchangeable.

Do not collapse these layers into one string or introduce local rules that only one caller uses.

Provider wire-name grammar and length limits remain provider-owned validation unless an SDK-owned routing invariant requires local enforcement. Follow [Model and Provider Boundaries](model-provider-boundaries.md#provider-validation-and-error-ownership) before adding name validation to shared tool types or canonical identity helpers.

## Canonical Helpers

Use `src/agents/_tool_identity.py` as the single implementation layer. Important helpers include:
Expand Down
32 changes: 24 additions & 8 deletions .agents/skills/code-change-verification/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,39 @@
---
name: code-change-verification
description: Run the mandatory verification stack when changes affect runtime code, tests, or build/test behavior in the OpenAI Agents Python repository.
description: Run the required final formatting, lint, type, and test checks after eligible SDK changes pass review.
---

# Code Change Verification

## Overview

Ensure work is only marked complete after formatting, linting, type checking, and tests pass. Use this skill when changes affect runtime code, tests, or build/test configuration. You can skip it for docs-only or repository metadata unless a user asks for the full stack.
Ensure work is only marked complete after formatting, linting, type checking, and tests pass. Use this skill when changes affect runtime code, tests, or build/test configuration. You can skip it for docs-only or repository metadata unless a user asks for the full stack. This is a post-review final gate: when `$implementation-final-review` applies, do not invoke the broad stack until its clean-review condition applies to the stable task diff.

## Quick start

1. Keep this skill at `./.agents/skills/code-change-verification` so it loads automatically for the repository.
2. macOS/Linux: `bash .agents/skills/code-change-verification/scripts/run.sh`.
3. Windows: `powershell -ExecutionPolicy Bypass -File .agents/skills/code-change-verification/scripts/run.ps1`.
4. The scripts run `make format` first, then run `make lint`, `make typecheck`, and `make tests` in parallel with fail-fast semantics.
5. While the parallel steps are still running, the scripts emit periodic heartbeat updates so you can tell that work is still in progress.
6. If any command fails, fix the issue, rerun the script, and report the failing output.
7. Confirm completion only when all commands succeed with no remaining issues.
2. Codex on macOS/Linux: `/usr/bin/env -u OPENAI_API_KEY OPENAI_AGENTS_TEST_IN_CODEX_SANDBOX=1 UV_DEFAULT_INDEX=https://pypi.org/simple bash .agents/skills/code-change-verification/scripts/run.sh`.
3. Other macOS/Linux environments: `env UV_DEFAULT_INDEX=https://pypi.org/simple bash .agents/skills/code-change-verification/scripts/run.sh`.
4. Windows: `powershell -ExecutionPolicy Bypass -File .agents/skills/code-change-verification/scripts/run.ps1`.
5. The scripts run `make format` first, then run `make lint`, `make typecheck`, and `make tests` in parallel with fail-fast semantics.
6. While the parallel steps are still running, the scripts emit periodic heartbeat updates so you can tell that work is still in progress.
7. If any command fails, fix the issue, rerun the script, and report the failing output.
8. Confirm completion only when all commands succeed with no remaining issues.

## Start condition and host capacity

- During iterative review, use only focused tests and a narrowly targeted static check when the changed typing boundary requires one. Defer repository-wide `make typecheck` and the rest of this complete stack until review is clean.
- Immediately before starting the complete stack, use available read-only task or process evidence to check whether another repository-wide test, typecheck, build, examples runner, or integration command is already active on the same host.
- When concrete contention is visible, continue useful non-heavy work such as review, remediation, evidence preparation, or focused checks, then check again later. Do not create or wait on a repository lock, host-wide mutex, or sentinel file.
- Start automatically once review is clean, the diff is stable, and observable host capacity is available. Do not require a user-triggered `finalize` message. If host telemetry is unavailable, do not block solely because capacity cannot be measured.

## Codex execution policy

Repository verification and all child processes must remain in the normal Codex workspace sandbox. Never request elevated sandbox permissions for the verification wrapper, and never retry the wrapper with broader host access after a failure.

On macOS, tests marked `requires_native_macos_sandbox` need to start their own `sandbox-exec` process. The Codex command sets `OPENAI_AGENTS_TEST_IN_CODEX_SANDBOX=1`, which skips only that marker before nested sandbox creation. All other tests remain enabled. Ordinary local and CI runs do not set this variable and therefore keep the marked tests enabled.

The marked tests run separately on a disposable GitHub-hosted macOS runner. If that trusted runner is unavailable, report the missing native-macOS coverage; do not compensate by weakening the Codex sandbox boundary.

## Environment setup

Expand Down
2 changes: 1 addition & 1 deletion .agents/skills/code-change-verification/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
interface:
display_name: "Code Change Verification"
short_description: "Run the required local verification stack"
default_prompt: "Use $code-change-verification to run the required local verification stack and report any failures."
default_prompt: "Use $code-change-verification to run the required local verification stack inside the normal Codex workspace sandbox. On macOS/Linux, use the documented Codex command so only tests that require a native macOS sandbox are skipped locally. Never request elevated sandbox permissions or retry with broader host access. Report any failures."
27 changes: 16 additions & 11 deletions .agents/skills/docs-sync/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: docs-sync
description: Analyze main branch implementation and configuration to find missing, incorrect, or outdated documentation in docs/. Use when asked to audit doc coverage, sync docs with code, or propose doc updates/structure changes. Only update English docs under docs/** and never touch translated docs under docs/ja, docs/ko, or docs/zh. Provide a report and ask for approval before editing docs.
description: Audit or update English SDK documentation against the requested implementation scope.
---

# Docs Sync
Expand All @@ -9,17 +9,21 @@ description: Analyze main branch implementation and configuration to find missin

Identify doc coverage gaps and inaccuracies by comparing main branch features and configuration options against the current docs structure, then propose targeted improvements.

## Authorization and scope

For an audit or proposal-only request, report findings without editing. When the user requests updates or has already approved a plan, complete those local edits and applicable checks without asking again. Ask only about unresolved scope, behavior, release timing, or additional authority. Keep generated translations untouched. Apply the repository's Documentation Release Timing policy before including unreleased behavior in `docs/`.

## Workflow

1. Confirm scope and base branch
- Identify the current branch and default branch (usually `main`).
- Prefer analyzing the current branch to keep work aligned with in-flight changes.
- If the current branch is not `main`, analyze only the diff vs `main` to scope doc updates.
- Avoid switching branches if it would disrupt local changes; use `git show main:<path>` or `git worktree add` when needed.
- Use a branch diff only for a branch-scoped request. A requested topic or released-doc correction remains in scope even when it is unrelated to the current branch diff.
- Avoid switching branches if it would disrupt local changes. Prefer read-only inspection such as `git show main:<path>`. If a separate checkout is genuinely required, stop and obtain the explicit approval required by `AGENTS.md` before creating or switching a worktree.

2. Build a feature inventory from the selected scope
- If on `main`: inventory the full surface area and review docs comprehensively.
- If not on `main`: inventory only changes vs `main` (feature additions/changes/removals).
- Bound the inventory to the requested topic or diff. Inventory the full surface only for an explicitly comprehensive audit.
- For branch-scoped work, inspect feature additions, changes, and removals relative to the intended base.
- Focus on user-facing behavior: public exports, configuration options, environment variables, CLI commands, default values, and documented runtime behaviors.
- Capture evidence for each item (file path + symbol/setting).
- Use targeted search to find option types and feature flags (for example: `rg "Settings"`, `rg "Config"`, `rg "os.environ"`, `rg "OPENAI_"`).
Expand All @@ -42,16 +46,17 @@ Identify doc coverage gaps and inaccuracies by comparing main branch features an
- **Incorrect/outdated**: names, defaults, or behaviors that diverge from main.
- **Structural issues** (optional): pages overloaded, missing overviews, or mis-grouped topics.

6. Produce a Docs Sync Report and ask for approval
- Provide a clear report with evidence, suggested doc locations, and proposed edits.
- Ask the user whether to proceed with doc updates.
6. Report findings or continue authorized updates
- For audit-only work, provide evidence, suggested locations, and proposed edits, then stop.
- For an update request, use the findings to complete the authorized edits.

7. If approved, apply changes (English only)
7. Apply authorized changes (English only)
- Edit only English docs in `docs/**`.
- Do **not** edit `docs/ja`, `docs/ko`, or `docs/zh`.
- Keep changes aligned with the existing docs style and navigation.
- Update `mkdocs.yml` when adding or renaming pages.
- Build docs with `make build-docs` after edits to verify the docs site still builds.
- Classify the complete diff with the Documentation Verification Tiers in `AGENTS.md` and run only the checks required by that tier.
- For content or structural changes, run `make build-docs` once after the edits and required review are stable. Do not run it for editorial-only changes.

## Output format

Expand All @@ -69,7 +74,7 @@ Docs Sync Report
- Proposed change + rationale
- Proposed edits
- Doc file -> concise change summary
- Questions for the user
- Unresolved decisions, only when needed

## References

Expand Down
Loading
Loading