fix: include empty properties in get_me schema for OpenAI compatibility#1553
Merged
SamMorrowDrums merged 1 commit intomainfrom Dec 8, 2025
Merged
fix: include empty properties in get_me schema for OpenAI compatibility#1553SamMorrowDrums merged 1 commit intomainfrom
SamMorrowDrums merged 1 commit intomainfrom
Conversation
OpenAI strict mode requires the `properties` field to be present in
object schemas, even when empty. The jsonschema library uses omitempty
which causes empty maps to be omitted during JSON serialization.
This change uses json.RawMessage to bypass the library's serialization
and explicitly include `"properties": {}` in the output.
Fixes #1548
Contributor
There was a problem hiding this comment.
Pull request overview
This PR fixes an OpenAI strict mode compatibility issue where the get_me tool's input schema lacked an explicit properties field. OpenAI's strict mode requires object schemas to include the properties field even when empty, but the jsonschema library omits empty maps during serialization due to omitempty tags.
Key Changes
- Modified
get_metool to usejson.RawMessagefor explicit schema control - Updated toolsnap to reflect the new schema with empty
propertiesobject
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| pkg/github/context_tools.go | Changed InputSchema from &jsonschema.Schema{Type: "object"} to json.RawMessage with explicit "properties": {} to ensure OpenAI strict mode compatibility |
| pkg/github/toolsnaps/get_me.snap | Updated snapshot to reflect the new schema format including the empty properties field |
IrynaKulakova
approved these changes
Dec 8, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1553
Summary
OpenAI strict mode requires the
propertiesfield to be present in object schemas, even when empty. Theget_metool has no input parameters, so its schema was{"type": "object"}without apropertiesfield.Problem
The
jsonschemalibrary'sSchemastruct usesomitemptyJSON tags, causing empty maps to be omitted during JSON serialization. Even when settingProperties: map[string]*jsonschema.Schema{}, the output remains{"type": "object"}.Error from OpenAI:
Solution
Use
json.RawMessageto bypass the library's serialization and explicitly include"properties": {}in the output:This ensures OpenAI strict mode compatibility while maintaining the same logical schema.
Testing
script/lint- 0 issuesscript/test- all tests pass"properties": {}Fixes #1548