Skip to content

fix(agent): fold gpt tool names for workers - #1452

Merged
TheGreatAxios merged 5 commits into
mainfrom
fix/worker-family-tool-names
Oct 16, 2026
Merged

TheGreatAxios merged 5 commits into
mainfrom
fix/worker-family-tool-names

Conversation

@TheGreatAxios

@TheGreatAxios TheGreatAxios commented Oct 16, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Worker advertisement and requires_tools preflight resolve wire names from the profile projection table (ENGINE_TO_WIRE_BY_PROFILE plus that profile's fold). A later family uses the same path; director packages stay shared.
  • A required wire passes when it maps, for the worker's resolved profile, onto an engine the director already allows. apply_patch, shell, and update_plan are gpt rows in that table, not a special case. A name the profile does not advertise stays unknown_tool.
  • A default-family worker still rejects apply_patch. A gpt worker whose allowlist has no file-mutation engine still rejects apply_patch. DOCS_TOOLS and BUILD_TOOLS stay engine ids and do not list apply_patch.

Why: the parent session already folded family wire names, but worker preflight only knew catalog engine ids.

Verification

  • bun run typecheck and bun run build pass (pre-commit)
  • bun test src/subagent/capability-preflight.test.ts src/agent/tool-search.test.ts src/agent/tool-aliases.test.ts src/agent/prompt-sizes.test.ts src/agent/directors/tool-sets.test.ts src/agent/codex-tool-mount.test.ts — 166 pass, 0 fail
  • gpt + BUILD_TOOLS: apply_patch canonicalizes to write_file, edit_file, delete_file; shell to run_shell; update_plan to manage_tasks
  • default family + apply_patch is unknown_tool
  • gpt + READ_TOOLS + apply_patch is missing_tool
  • bun run check on the previous commit failed one pre-existing scan-coverage floor (1366 scanned files, floor 1240). This commit adds no files.

Spawn preflight treated apply_patch as an unknown engine, so a gpt
worker could not require the wire name its allowlist already covers
with write, edit, and delete. Worker advertise lists now use the same
family projection as the parent.
@corbits-triage

corbits-triage Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Triage: Fail

@TheGreatAxios, please address the following:

  • pull request does not reference an issue

requires_tools and worker advertisement resolve wire names through
the profile projection, so a later family uses the same path as gpt.
apply_patch, shell, and update_plan are rows in that table.
requires_tools accepts a wire name only when that profile projects it
onto an allowlisted engine. shell and update_plan stay gpt-only; default
keeps bash for run_shell.
The worker prefix lists shell, but the call gate only matched the
default bash wire, so a shell call promoted run_shell. An exclude of
manage_tasks now denies both update_plan and the engine id; shell and
run_shell follow the same rule.
@TheGreatAxios
TheGreatAxios merged commit da1847c into main Oct 16, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant