You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@github/copilot-sdk@1.0.0 exposes reasoningEffort as a first-class session-config field and maxOutputTokens / wireApi on ProviderConfig, but there is no field for verbosity
anywhere in the SDK. For GPT-5.x reasoning models we need to set the Responses API text.verbosity (and the chat/completions top-level verbosity) per request, and today the SDK
gives us no way to do that — forcing a header/proxy shim we'd like to delete.
This is a sibling of #1627 (which is about maxOutputTokens not being applied for custom models);
this one is specifically about verbosity having no config surface at all.
Model: a GPT-5.x reasoning deployment (custom Azure deployment name)
What we want
Set verbosity per request for GPT-5.x reasoning models (our sandbox/plan2step config uses verbosity: 'low'), the same way reasoningEffort is set today:
There is no verbosity field on SessionConfig / SessionConfigBase, on ProviderConfig, or on
the per-message options. A search of the published SDK (@github/copilot-sdk@1.0.0dist/,
both .d.ts and compiled .js) returns zero occurrences of verbosity. By contrast, reasoningEffort is first-class:
// types.d.ts (1.0.0)exporttypeReasoningEffort="low"|"medium"|"high"|"xhigh";// SessionConfigBase
reasoningEffort?: ReasoningEffort;// gated by capabilities.supports.reasoningEffort// ProviderConfig
wireApi?: "completions"|"responses";
maxOutputTokens?: number;// …but nothing analogous for verbosity
What we do today (and want to remove)
Because there's no SDK field, the only way to set verbosity is to smuggle it through a custom
header (e.g. x-oa-gpt-verbosity) and have our proxy strip the header and re-stamp it onto the
request body — including the per-wire-API naming difference (text.verbosity for /responses,
top-level verbosity for /chat/completions). First-class SDK support would let us delete that
shim. (This is exactly the simplification the SDK team suggested for reasoningEffort / maxOutputTokens.)
Request
Expose verbosity as a first-class config field — ideally on SessionConfig / SessionConfigBase, mirroring reasoningEffort (e.g. verbosity?: "low" | "medium" | "high"),
with the SDK normalizing the per-wire-API naming (text.verbosity vs top-level verbosity).
Gate it with a model capability (e.g. capabilities.supports.verbosity, discoverable via client.listModels()), the same pattern as capabilities.supports.reasoningEffort.
Summary
@github/copilot-sdk@1.0.0exposesreasoningEffortas a first-class session-config field andmaxOutputTokens/wireApionProviderConfig, but there is no field forverbosityanywhere in the SDK. For GPT-5.x reasoning models we need to set the Responses API
text.verbosity(and the chat/completions top-levelverbosity) per request, and today the SDKgives us no way to do that — forcing a header/proxy shim we'd like to delete.
This is a sibling of #1627 (which is about
maxOutputTokensnot being applied for custom models);this one is specifically about
verbosityhaving no config surface at all.Environment
@github/copilot-sdk@1.0.0,@github/copilotCLI v1.0.59, protocolVersion 3ProviderConfig = { type: 'openai', baseUrl: '…/v1/openai', wireApi: 'responses', apiKey }What we want
Set
verbosityper request for GPT-5.x reasoning models (our sandbox/plan2step config usesverbosity: 'low'), the same wayreasoningEffortis set today:wireApi: 'responses') →text.verbosity: 'low' | 'medium' | 'high'wireApi: 'completions') → top-levelverbosity: 'low' | 'medium' | 'high'Current state (the gap)
There is no
verbosityfield onSessionConfig/SessionConfigBase, onProviderConfig, or onthe per-message options. A search of the published SDK (
@github/copilot-sdk@1.0.0dist/,both
.d.tsand compiled.js) returns zero occurrences ofverbosity. By contrast,reasoningEffortis first-class:What we do today (and want to remove)
Because there's no SDK field, the only way to set verbosity is to smuggle it through a custom
header (e.g.
x-oa-gpt-verbosity) and have our proxy strip the header and re-stamp it onto therequest body — including the per-wire-API naming difference (
text.verbosityfor/responses,top-level
verbosityfor/chat/completions). First-class SDK support would let us delete thatshim. (This is exactly the simplification the SDK team suggested for
reasoningEffort/maxOutputTokens.)Request
verbosityas a first-class config field — ideally onSessionConfig/SessionConfigBase, mirroringreasoningEffort(e.g.verbosity?: "low" | "medium" | "high"),with the SDK normalizing the per-wire-API naming (
text.verbosityvs top-levelverbosity).capabilities.supports.verbosity, discoverable viaclient.listModels()), the same pattern ascapabilities.supports.reasoningEffort.table (so it doesn't hit the same custom-model gap as ProviderConfig.maxOutputTokens not applied to the request for a custom provider + unknown model #1627).
Is this on the roadmap, and is there a preferred field shape to align to? Happy to share details
or a minimal repro.