-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Write tools (edit, write_file, create_file) not exposed to OpenAI models in function calling namespace #1008
Description
Description
When using the GitHub Copilot SDK 0.2.1 with OpenAI models (gpt-5.3-codex, gpt-5.4), the write tools (edit, write_file, create_file, edit_file) are not visible to the model in the function calling namespace, even though they are correctly registered in the session.
Claude models (claude-sonnet-4.6) using the exact same session configuration can see and use all write tools without any issue.
Context
Using the Copilot SDK. I can switch between Claude and GPT models. The SDK session is created with identical parameters for both models.
Steps
- Send a message asking to modify a file (e.g., "add ScaleControl to MapProvider.tsx")
- Claude (claude-sonnet-4.6): calls
editandcreatetools successfully - GPT (gpt-5.3-codex / gpt-5.4): states write tools are not available
Evidence from GPT-5.4 session logs
GPT internal reasoning:
"I'm wondering if hidden tool names outside of the functions namespace are causing this 'cannot call' mistake. It seems I can only send tool calls with the available namespace."
GPT explicit statement about tools:
"Claude a pu utiliser edit, puis ensuite le runtime a annonce: create, edit, grep non disponibles"
Sub-agent running on GPT-5.3-codex:
"I'm unable to apply the requested code changes because this environment only exposes view and delete_file tools, and does not provide any file-editing tool (edit_file / write_file / create_file)."
Key observation
The system prompt (text-based tool documentation) is identical for both models. The difference appears to be in the function calling schema — the structured JSON tool definitions that the SDK sends alongside the system prompt. GPT models report that write tools are not in their callable namespace, while Claude models see and use them.
Expected behavior
All 75 registered tools (including write tools: edit, write_file, create_file, edit_file, delete_file) should be available to ALL models in the function calling namespace, regardless of whether the model is Claude or GPT.
Environment
- SDK:
@github/copilot-sdk@0.2.1 - Node.js: 22.x
- OS: Windows 11
- Models tested:
gpt-5.3-codex(fail),gpt-5.4(FAIL),claude-sonnet-4.6(OK)