Problem
In the VS Code webview, a workspace's selected model can be one the admin policy disallows: persisted from before, seeded from the workspace (#4778), or revoked by a policy refresh. Since #4807 the model dropdown hides disallowed models, but the composer still shows the stored selection as active, and getSendOptionsFromStorage() sends it. Every send then fails with policy_denied until the user picks another model.
This is not a regression: before #4807 the webview also sent that model and got the same denial. Found in Codex review of #4807.
Proposed fix
Reconcile the selection when the policy excludes it, the way the desktop composer does if it has such logic; check ChatInput first. Options: fall back to an allowed model, or disable Send with a clear reason. Reuse the desktop helper instead of adding webview-only logic.
Refs #4739
Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high • Cost: $43.37
Problem
In the VS Code webview, a workspace's selected model can be one the admin policy disallows: persisted from before, seeded from the workspace (#4778), or revoked by a policy refresh. Since #4807 the model dropdown hides disallowed models, but the composer still shows the stored selection as active, and
getSendOptionsFromStorage()sends it. Every send then fails withpolicy_denieduntil the user picks another model.This is not a regression: before #4807 the webview also sent that model and got the same denial. Found in Codex review of #4807.
Proposed fix
Reconcile the selection when the policy excludes it, the way the desktop composer does if it has such logic; check
ChatInputfirst. Options: fall back to an allowed model, or disable Send with a clear reason. Reuse the desktop helper instead of adding webview-only logic.Refs #4739
Generated with
xum• Model:anthropic:claude-opus-5-5• Thinking:high• Cost:$43.37