Enforce strict tool name collision errors (#37020)

## What changed

- Track the first duplicate effective tool name while assembling the tool registry, including collisions introduced by external tools, code mode, and tool search.
- When `[features.tool_registry].error_on_tool_collisions` is enabled, fail the turn with a `duplicate tool: <namespace>.<name>` error before sending a model request.
- Continue allowing identical tool names in different namespaces, and preserve the existing collision behavior when strict checking is disabled.

## Testing

- Cover registry collision tracking, strict tool planning across tool sources, namespace isolation, failure before sampling, and pre-sampling compaction.

GitOrigin-RevId: 4cf83538fb513cec0b9c8b567780caaaadd3243d
This commit is contained in:
rka-oai authored and copyberry committed 2026-08-05 04:00:50 +00:00
1 parent 5d89ab65dc
commit 1e489adad0
13 files changed
+374 -17

No files matched your search

+4
View File
@@ -56,6 +56,10 @@ fn retryability_preserves_error_details_distinctions() {
}),
true,
),
(
CodexErrorDetails::ToolCollision("functions.update_plan".to_string()).into(),
false,
),
(CodexErr::InternalServerError, true),
];