Skip to content

Bedrock web search is served but never billed, and external web access is silently forced off #138

Description

@JGoutin

Found while implementing #134, both present in v1.15.0 (1c2ecde9 shipped the
Mantle passthrough that serves the tool).

1. The searches are not billed. /v1/responses on the GPT-5.x family already
forwards the web_search tool and returns web_search_call items with
url_citation annotations — that part works. AWS meters those searches per query at
a flat rate, published with no model attribute on the price row, so the row
resolves to no dimension and no model key and is dropped silently. A measured
turn under-reported cost by 58%. Every test passes while the feature bills
nothing, which is the failure mode that makes this worth its own issue: an operator
running v1.15.0 is paying AWS for searches that never appear in their usage or cost
reporting.

2. external_web_access is silently overridden. The gateway forces the field
off on a knob that is both cost-bearing and security-bearing (it lets the model fetch
arbitrary URLs), justified by a code comment stating live web access always fails
upstream — which a real call falsifies: it returned HTTP 200 and ran four searches.
Under the API design rules this is the reject the explicit ask case plus an
*_allow_*_override setting, not a silent overwrite.

Its own fix: commit rather than folded into #134, whose scope is the new capability
rather than the released defect.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingsecuritySecurity related

    Type

    No type

    Projects

    Status
    Backlog

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions