Skip to content

Write tools (edit, write_file, create_file) not exposed to OpenAI models in function calling namespace #1008

@bdlst

Description

@bdlst

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

  1. Send a message asking to modify a file (e.g., "add ScaleControl to MapProvider.tsx")
  2. Claude (claude-sonnet-4.6): calls edit and create tools successfully
  3. 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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions