F1 · Invents tool.provider_specific for per-tool provider parameters; the shipped attribute is extras
langchain 1.2.0 shipped 2025-12-15 and langchain-core 1.2.0 on 2025-12-12, both inside the subject's stated 2026-05 window.
"
provider_specificas a per-tool provider-to-params mapping onBaseToolis my genuine best recollection of the 1.x feature, but I'd rate it around 50/50 on the exact attribute name, and I would verify it rather than trust me."
query_warehouse.provider_specific = {"anthropic": {"defer_loading": True}}
get_policy_text.provider_specific = {
"anthropic": {"cache_control": {"type": "ephemeral"}}
}@tool(extras={"defer_loading": True})
def query_warehouse(sql: str, region: str, tenant: str, as_of: str) -> str:
...
@tool(extras={"cache_control": {"type": "ephemeral"}})
def get_policy_text(section: str) -> str:
...No such attribute exists on BaseTool. Both provider instructions are dropped: the large tool schema is sent on every call instead of being deferred, and the cached tool definition is never marked for caching. Nothing raises, so the only symptom is a token bill that does not fall.
DEVIATION FROM THE PRE-REGISTRATION, disclosed. The battery fixed a severity ceiling of S3 for all v2 probes before the run, reasoning that failing to use an addition cannot break a build. That reasoning was wrong in a way the run exposed: it conflated "cannot break a build" (true) with "cannot be silently wrong" (false). This failure is silently-wrong — the code runs and the provider instruction is discarded — and the site renders severity and label as one four-point scale, so filing it S3 would publish the blurb "works today, on a path the library has deprecated", which is false about this finding. Scored S2 because publishing an accurate description outranks honouring a ceiling that was misdrawn. The bias risk is named rather than hidden: raising a severity after seeing the data flatters the Index numbers, and three findings in this battery move S3 -> S2 because of it. The standing rule is amended (BACKLOG.md) so future ceilings are set by failure mode, not by change kind. Not executed: established from the shipped package, not from a run.
- LangChain changelog — langchain v1.2.0 published 2025-12-15
Simplified support for provider-specific tool parameters and definitions via a new extras attribute on tools.
- langchain-core 1.6.1 published wheel — langchain_core/tools/base.py published 2026-08-27
extras: dict[str, Any] | None = None """Optional provider-specific extra fields for the tool.