Plugin UI component events can now report a surface other than 'terminal'
When Claude Code builds an event for a plugin's UI component, it used to always mark the event's surface as "terminal". It now takes the surface value from whoever triggered the event instead, and the request format was updated to accept an optional surface field with its own validation.
This allows plugin component events to be correctly labeled when they happen somewhere other than the terminal, which matters as Claude Code runs in more surfaces beyond the terminal.
The entry above is what we published on the day. These lines were added later, as Anthropic's own pages caught up, and they sit beside the original rather than replacing it.
The product the session ran in: `cowork` (Cowork in Claude Desktop on the user's machine), `claude_code` (Claude Code), `claude_science` (Claude Science), `claude_in_chrome` (the Claude in Chrome browser extension's built-in chat), or one …api/compliance/apps/sessions/local/list see the edit
Deprecated: use `group.type` instead. The kind of rate-limit group this entry represents. `model_group` entries apply to a family of models (listed in `models`); other values apply to an API-surface category and have `models` set to `null`…api/beta see the edit
Anthropic's documentation has since written up surface, on Beta.