Bug type
Behavior bug (incorrect output/state without crash)
Beta release blocker
No
Summary
When tools.profile is set to coding (the default after running the Docker setup wizard), every agent turn fails with HTTP 400 because the built-in read tool schema is sent to the provider without additionalProperties: false, which OpenAI and GitHub Copilot providers require.
Steps to reproduce
- Run the Docker setup wizard (
./scripts/docker/setup.sh) — it sets tools.profile: "coding" by default.
- Start the gateway (
docker compose up -d openclaw-gateway).
- Open the dashboard and send any message (e.g. "Hi") using any OpenAI or GitHub Copilot model.
- Observe the error immediately — no tool call is needed to trigger it.
Expected behavior
The read tool schema (and all built-in coding-profile tool schemas) should have additionalProperties: false injected before the request is sent to providers that enforce strict JSON Schema, so tool calls succeed normally.
Actual behavior
Every turn fails with:
HTTP 400: Invalid schema for function 'read': In context=(), 'additionalProperties' is required to be supplied and to be false.
The error occurs on the first turn regardless of message content. Switching to a different provider (e.g. github-copilot/claude-sonnet-4.6) does not resolve it — the same 400 is returned.
OpenClaw version
2026.4.4
Operating system
macOS 15 (host), Docker container (node:24-bookworm)
Install method
Docker (./scripts/docker/setup.sh + docker compose)
Model
openai/gpt-5.4 (primary), also reproduced with github-copilot/claude-sonnet-4.6
Provider / routing chain
openclaw -> openai
openclaw -> github-copilot
Additional provider/model setup details
tools.profile: "coding" set in ~/.openclaw/openclaw.json (written by the setup wizard)
- No MCP servers configured
- No custom tool overrides
- Reproduced with both primary and fallback models across two different providers
Logs, screenshots, and evidence
Error shown in the Control UI chat view on every turn:
HTTP 400: Invalid schema for function 'read': In context=(), 'additionalProperties' is required to be supplied and to be false.
The error is consistent across all turns and both tested providers. Switching providers does not help.
Impact and severity
- Affected: Any user who installs via Docker (the setup wizard sets
tools.profile: "coding" by default) and uses OpenAI or GitHub Copilot providers
- Severity: Complete blocker — no messages can be processed at all
- Frequency: 100% of turns, from the very first message
- Consequence: The gateway is fully non-functional out of the box with the default Docker setup
Additional information
Workaround: set tools.profile to a profile that does not include the read tool, or disable the read tool explicitly:
docker compose run --rm openclaw-cli config set tools.profile default
docker compose run --rm openclaw-cli restart
Related issues: #29416, #58084 (similar schema validation failures but for different tools/contexts).
The root cause appears to be that the coding profile's built-in read tool schema is missing additionalProperties: false in the schema normalization path before it is serialized into the provider request. The AGENTS.md notes that native OpenAI-family routes default tool schemas to strict mode — but the normalization that injects additionalProperties: false does not appear to cover the built-in read tool.
Bug type
Behavior bug (incorrect output/state without crash)
Beta release blocker
No
Summary
When
tools.profileis set tocoding(the default after running the Docker setup wizard), every agent turn fails with HTTP 400 because the built-inreadtool schema is sent to the provider withoutadditionalProperties: false, which OpenAI and GitHub Copilot providers require.Steps to reproduce
./scripts/docker/setup.sh) — it setstools.profile: "coding"by default.docker compose up -d openclaw-gateway).Expected behavior
The
readtool schema (and all built-in coding-profile tool schemas) should haveadditionalProperties: falseinjected before the request is sent to providers that enforce strict JSON Schema, so tool calls succeed normally.Actual behavior
Every turn fails with:
The error occurs on the first turn regardless of message content. Switching to a different provider (e.g.
github-copilot/claude-sonnet-4.6) does not resolve it — the same 400 is returned.OpenClaw version
2026.4.4
Operating system
macOS 15 (host), Docker container (node:24-bookworm)
Install method
Docker (
./scripts/docker/setup.sh+docker compose)Model
openai/gpt-5.4(primary), also reproduced withgithub-copilot/claude-sonnet-4.6Provider / routing chain
openclaw -> openaiopenclaw -> github-copilotAdditional provider/model setup details
tools.profile: "coding"set in~/.openclaw/openclaw.json(written by the setup wizard)Logs, screenshots, and evidence
Error shown in the Control UI chat view on every turn:
The error is consistent across all turns and both tested providers. Switching providers does not help.
Impact and severity
tools.profile: "coding"by default) and uses OpenAI or GitHub Copilot providersAdditional information
Workaround: set
tools.profileto a profile that does not include thereadtool, or disable thereadtool explicitly:docker compose run --rm openclaw-cli config set tools.profile default docker compose run --rm openclaw-cli restartRelated issues: #29416, #58084 (similar schema validation failures but for different tools/contexts).
The root cause appears to be that the
codingprofile's built-inreadtool schema is missingadditionalProperties: falsein the schema normalization path before it is serialized into the provider request. The AGENTS.md notes that native OpenAI-family routes default tool schemas to strict mode — but the normalization that injectsadditionalProperties: falsedoes not appear to cover the built-inreadtool.