Repository navigation
dashboard@0.134.0
Minor Changes
-
1ae1678: The Access Hub catalog now offers Claude Tag. Its card opens a page listing the access allowed under the platform, and Register new access opens a guided setup that asks only for the Anthropic organization ID, an agent and optional tags, then trusts the platform and allows every channel in that organization in one step. Catalog platforms and their setup steps are YAML files shipped with the server, validated when loaded, and served by the new
workloadIdentities.listPlatformsmethod, which requiresworkload:read.The Claude Tag setup links to Claude Tag's federated access settings and to where the Anthropic organization ID is found, can create an agent inline (named Claude Tag by default), and walks through the two Anthropic console dialogs as a checklist: each console field with the value to paste or what to do, and a checkbox to tick off as the operator goes. Definitions place these rows with the new
checklist_itemblock. The setup no longer warns that the access rule admits more than one identity, since the operator cannot change that for a catalog platform. -
1ae1678: The Access Hub's guided setup now shows the token endpoint, issuer and MCP host an external platform is pointed at. A dropdown lists every user session issuer in shared mode, at the organization level and in each project, by slug, and the values shown are that issuer's
/oauth/usi/{id}authorization server. They come from the newworkloadIdentities.listTokenEndpointsmethod, which requiresworkload:readand derives them exactly as the shared authorization server's own metadata does. -
48217fd: Add
remoteMcp.getServerScopesandremoteMcp.setServerScopePinso a remote-backed MCP server's protected resource scope pin can be read and set, including servers whose resource was never discovered. The pin is shared by every server in the project with the same upstream URL, so both endpoints require write access to all of them. The read reports what a login through each bound client would request now and whether the pin applies to it.Add a "Pinned scopes" picker under the connected identity provider on a Remote MCP server's Identity settings, showing whether the pin is used for that connection; it is read-only for organizations without resource scope discovery unless a pin needs clearing. Saving only header or pin edits no longer re-commits the connected client.
-
3ee542c: Organization admins can set a remote identity provider to send no scope instead of its whole supported list when a sign-in has no other scope source. The provider's Overview, Settings and the admin issuer and server health views show the setting. The issuer scope override is now chosen from a picker of the provider's supported scopes.
-
5661e01: The role editor's MCP access tab is now a server picker. It opens with a Specific servers / All servers choice; Specific servers lists every MCP server grouped by project, with the Default project pinned first, fuzzy search, collapsible projects that count their chosen servers, and Select all / Clear all. Clicking a server's row ticks it; its badges and ellipsis menu open a side sheet that limits its tools to all tools, a searchable hand-picked list, or tools carrying chosen annotations, and the menu also forbids the server. Forbidden servers sit in their own section, each with Remove. Servers the role already administers through
mcp:readormcp:writeshow as ticked and locked, with a hover card that links to Platform access. Rules the picker cannot show, such as access to a whole project, are kept as stored, and the editor now notices when one server is swapped for another. -
dfe18bd: Rename the request headers and environment variables customers set to Speakeasy AI names. Every Gram name keeps working as a deprecated alias.
- Request headers: the API accepts
Speakeasy-AI-Key,Speakeasy-AI-Project,Speakeasy-AI-Session,Speakeasy-AI-Chat-Session,Speakeasy-AI-Environment,Speakeasy-AI-Mode,Speakeasy-AI-User-EmailandSpeakeasy-AI-Device-Serial,-Hostnameand-Environment. Each is the canonical name of theGram-*header it replaces, and wins when a request sends both. LiteLLM ingest also readsspeakeasy-ai-session-idandspeakeasy-ai-agent-provider,-session-idand-turn-idbefore thex-gram-*names. - Hooks:
speakeasy-hooksreads every setting fromSPEAKEASY_AI_HOOKS_*, for exampleSPEAKEASY_AI_HOOKS_API_KEY, and falls back to the matchingGRAM_HOOKS_*name when the new one is unset. The plugin bootstrap readsSPEAKEASY_AI_HOOKS_HOMEbeforeGRAM_HOOKS_HOME. New credential caches go to$XDG_CONFIG_HOME/speakeasy-ai/hooks-auth.env; an existing cache at$XDG_CONFIG_HOME/gram/hooks-auth.envstays in use. - Generated plugins: Cursor, OpenCode and Codex plugins read the API key from
SPEAKEASY_AI_API_KEY, and Claude Code plugins prompt for it under that name. These configs cannot fall back to another variable, so setSPEAKEASY_AI_API_KEYafter the plugins update. Codex telemetry and the OpenCode LiteLLM attribution use the new header names. - Install snippets: the hosted MCP install page, the dashboard setup, hooks and LiteLLM pages, and the SDK samples show only the new names. The MCP install page uses
Speakeasy-AI-EnvironmentwithSPEAKEASY_AI_ENVIRONMENTandSPEAKEASY_AI_API_KEY. - Elements: the
environmentSlugoption replacesgramEnvironment, which still works whenenvironmentSlugis not set.
- Request headers: the API accepts
Patch Changes
- ef793bd: The policy Scope step now asks where a policy applies before showing any other controls: Client sessions, which requires the Speakeasy plugin and hooks on each workstation, or Specific MCP servers, which the gateway enforces. New policies no longer default to an unexplained "Everywhere" scope.
- 23981c4: Assistant permissions on roles and agents can now be narrowed to specific assistants, and an assistant's own write permission is now editable in the agent policy editor.
- d210c58: Hovering an MCP server, catalog, or source card now shows a quiet black-and-white halftone of rolling waves behind the icon instead of a confetti burst. The pattern follows the theme's foreground colour, is rolled fresh on every hover, and stays off when reduced motion is requested.
- bf20d80: Claude Code installs now use one settings snippet instead of CLI commands. Pick Just me (
~/.claude/settings.json) or My organization (managed settings). The snippet registers the marketplace under its exact name withautoUpdateon and enables the plugin, so plugins stay current with no manual step. The generated marketplace READMEs match, and the hooks setup dialog no longer uses the unsupportedplugins.requiredkey. - 5661e01: The role editor's tool access sheet can now connect a remote MCP server itself. For a server with no stored tool list, an editor with
mcp:writeon it gets the tools listed through a live session; with no upstream session yet, Connect opens the server's connect page in a new tab, and coming back lists the tools and records them. An editor withoutmcp:writeis told that setting tool-level permissions requires it, and no session is opened. The Inspect tab and the sheet share one connection hook. - 5661e01: The role and agent permission editors now list
mcp:readandmcp:writeunder Platform access, so MCP access holds onlymcp:connect. Each of the two rows notes that it also allows connecting to the servers it covers with every tool. - 5661e01: Saving a role on its edit page keeps you on the page and confirms with a "Role saved" toast, and creating a role opens the new role's edit page instead of returning to the roles list.
- 5661e01: Role names now link to the role's edit page on the identity page's Roles panel, the Usage by Role table in agent insights, the grant access dialog's suggested roles, the change role dialog's directory-mapped roles, and plugin audience rows, joining the MCP access pages that already did.
- ad78247: Rename the "No Identity" option for Remote MCP servers to "Manual", including the warnings that refer to it.
- ddd2073: Okta connections installed from the Okta Integration Network can authenticate with a client ID and client secret. Admins can choose the installation method, submit credentials, and replace the secret from the dashboard. A pending connection can switch between the two methods until its client ID is submitted, reusing one signing key. Token acquisition respects credential revocation and preserves observed DPoP binding across worker restarts.
- 81f48f1: Okta connections that authenticate with a client secret get a "Replace client secret" dialog on the connection card, and the Okta Integration Network checklist step links straight to Okta's API Service Integrations page. The Setup tab opens right after the organization URL is entered and lets admins switch between the recommended Okta Integration Network install and a custom API Services app.
- 35b67b5: User-facing text now names the product Speakeasy instead of Gram across the dashboard, admin dashboard, CLI help and output, server error messages, consent pages, MCP server info, and API descriptions. HTTP header names, environment variables, package names, and code identifiers are unchanged.