Repository navigation
Save every pinned web_search mode on Agents - #75
Merged
Merged
Conversation
Saved Agents now keep web_search modes live, cached, null and omitted as resource data with the official projection (TV-05): omitted or null mode is saved as live, omitted or null context_size as medium, allowed_domains keeps null versus [] and a present location includes all four keys. Session admission keeps the unchanged execution parser, so enabled search, saved or inline, still rejects with unsupported_or_invalid_configuration before any write on plain, streamed, self-hosted and hosted creation, unless the Session replaces its tools.
The resource scripts now expect every pinned web_search mode to save with the official projection and Session admission to keep rejecting enabled search, while a same-key retry recovers its earlier Session. The live tool policy script adds saved enabled search to its admission rejections.
The saved Agent tool union gains the web_search declaration with its mode union; inline execution tool types are unchanged. Core Web shows saved search as a read-only saved-only tool and blocks Sessions from such Agents, as it does for tool_search and programmatic tool calling.
Resolve K3 and the deferred TV-05 note, add the September 23 saved web_search section with rows W1-W8, register the SW evidence code and update the tool policy, execution coverage and contributor guidance.
A second official probe observed a partial location and {} saved with all
four keys (req_db41d2f6261b4abfb69465eafe719ab5,
req_165d53b88445490b9146d8272c54134d). Cite them in the Agent create
description, the tool policy and alignment docs, the PostgreSQL test and
the pinned-SDK script, which now cover both cases. The alignment doc now
limits same-key recovery to Sessions with a recorded creation request
hash, and a long CONTRIBUTING line is re-wrapped.
executionTools, dispatch request construction and every harness's admission qualification reject live, cached and omitted-mode search. The live tool policy script now asserts the rejection code and message.
Core admits explicit disabled search, so Web admission now mirrors it: one well-formed disabled declaration is allowed, while enabled or omitted-mode search is blocked because Core does not run it. Saved search labels no longer claim that disabled search cannot run.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Saved Agents now accept
web_searchin every pinned mode and project it the way the official service does. Core used to reject every mode exceptdisabledwhen saving. Execution qualification is unchanged: enabled search still cannot run, and Session admission rejects it before any write. The pinned baseline is unchanged (SDK 3.13.0 / d7c41ef /agents=v1).Behavior
web_searchwith modelive,cached, null or omitted is saved.live, and an omitted or nullcontext_sizebecomesmedium.allowed_domainskeeps null distinct from[].locationprojects all four keys (city,country,region,timezone), with null for missing ones;{}gives all four as null.unsupported_or_invalid_configuration, "Only disabled web_search is qualified for execution.". This applies to plain, streamed, self_hosted and hosted creation, and nothing is written.executionToolsguard and dispatch request building still refuse anything but disabled search. A new test pins this for all three harnesses.web_searchmode union.Evidence
location: {}).tool-policy.md,execution-tools.md,official-semantics-alignment.mdandoperation-evidence.md(register SW, rows 1 and 3).Validation
Independent acceptance, written from the requirements only: real Core with PostgreSQL, raw HTTP and the pinned SDK, no official or model calls.
The script was unchanged between runs (same sha256). The acceptance ran on the first candidate head. The later commits change only docs, tests and Core Web, so Core behavior is identical.
Tests:
official_client.pysuite.Server gate on the final head: all
make checktargets, plus Web typecheck, core-doctor, unit tests and build, pass. The Playwright browser cases were not run on the server (no Google Chrome; the user approved the skip).make openapiis byte-identical.Independent blind review by a fresh Claude Code subagent (the user-approved replacement for GPT-6 Astra). It found no blockers and confirmed three independent guards against executing enabled search. Its five follow-ups are fixed in the last three commits:
These were verified by focused tests and the gate, without a new review, per the user's rule.
No full protocol compatibility is claimed; enabled search execution remains unqualified.
Need help on this PR? Tag
@codesmithwith what you need. Autofix is disabled.