Connected GitHub App integrations now show separate Manage and Remove actions in integration settings, in place of a single Remove button — Manage opens the installation's settings on GitHub, and Remove opens a confirmation dialog before disconnecting.
The Ignored repos picker on the inventory scans page now searches your connected provider directly, so repositories beyond the first page of previously scanned repos can be found and ignored.
The eval runs list now shows a single Injected Context column in place of the separate Type and Subject columns, plus a new Scenarios column showing where each run's scenarios live.
The eval run detail view now labels variants "Baseline" and "With context" (replacing the misleading "Without context" label) and shows a new Injected Context panel describing exactly what fixture, plugin, directory, or commit a run injected.
Removed an inconsistent focus-ring outline from breadcrumb links; other interactive elements are unaffected.
Skill-overload warnings no longer count skills sitting in plain source directories that no agent actually loads — only genuinely root-loaded skills count toward the threshold.
GET /v1/orgs/{orgId}/credits no longer returns the bundles field by default. Pass ?include=bundles to include the purchasable credit-bundle catalogue in the response, as before.
Billing settings now show the Team plan's monthly price inline — free organisations see it next to the Upgrade to Team button before checkout, and Team organisations see it next to their plan name.
GET /v1/orgs/{orgId}/billing/subscription now includes monthlyPriceUsd and upgradePriceUsd fields. monthlyPriceUsd is the current plan's monthly price (null for free or custom-priced plans); upgradePriceUsd is the Team plan's upgrade price (null once the org is already on a paid plan).
Workspace member pages now support setting a default role that's automatically granted to every member of the workspace's organisation, on top of any individual membership — useful for organisations that provision users via SSO.
PATCH /v1/workspaces/:id now accepts an orgDefaultRole field. When set, every member of the workspace's owning organisation is granted that role on the workspace (capped at publisher); omit it or set it to null to remove the default.
New DELETE /v1/projects/:projectId endpoint soft-deletes a project — it's removed from normal reads and its name and source binding are freed for reuse, while eval-run and scenario-generation history is preserved.
Claude Sonnet 5 (claude-sonnet-5) is now available as an agent model for eval runs.
The workspace Inventories Scans page has been rebuilt as a dashboard, with summary cards for estate growth, findings backlog, and scan health shown above the scans table.
Organisations can now subscribe to the Team plan and manage billing from organisation settings — pay by card through a hosted checkout, get a monthly credit allowance, and buy additional credit bundles whenever you need them. Cancelling reverts the organisation to the free plan at the end of the billing period.
The org billing page's credit usage display now matches the sidebar meter: over-limit usage reads "You've used your credit allowance" instead of a negative remaining figure, and fractional credit amounts are floored consistently.
Requests to GET /v1/tiles/:workspaceName/:tileName/versions/:version/files/:filePath with a malformed percent-encoded file path now return 404 instead of 500. File paths containing a literal % are also served correctly.
Review and fix runs that select a custom reviewer plugin or a non-default model now require a paid plan. An explicit reviewer or model override on POST /experimental/review-runs or POST /experimental/fix-runs now returns 403 for an organisation without the entitlement — previously such requests were accepted or silently fell back to the default. Free organisations continue to run against the default reviewer and model with no change.
Workspace members can now start skill reviews, security reviews, and review-fix runs. Previously these required the publisher role or higher; running a review is now available at the member level.
Org install policies now support a git source allowlist. Under Source restrictions, admins can configure which git hosts and repository path prefixes are permitted — installs from any unlisted git source are blocked at evaluation time. Sources are specified as github.com/org or github.com/org/repo patterns.
The install policy sourceRestriction rule now accepts a gitSourceAllowlist field — an array of { host, path } objects. When present, policy evaluation blocks any git-sourced install whose source does not match a listed host and path prefix.
Skill inventories can now be deleted from the inventory list. Workspace managers and owners see a delete action with a confirmation dialog; deleted inventories and their scans are immediately hidden but the workspace can be re-scanned at any time.
New DELETE /v1/workspaces/:workspaceName/skill-inventories/:id endpoint removes a skill inventory and hides it and all associated scans. Requires the manage_integrations permission.
The inventory estate view now includes an Ignored repos panel for managing which repositories are excluded from future scans. Ignoring a repo purges its existing scan data and prevents it from being re-ingested on subsequent imports.
New GET, POST, and DELETE /v1/workspaces/{workspaceName}/skill-inventories/{id}/ignored-repos endpoints let workspace admins manage which repositories are excluded from inventory scans. Ignoring a repo cascades a full data purge of its existing findings.
The Inventories item now always appears in the workspace sidebar when the feature is enabled, even before any imports have been run. The empty state and failed-scan messages now show the tessl inventory import command.
Install, publish, and dependency policies can now be set and viewed at the org, workspace, and project levels from a unified policy editor. The editor shows the effective merged policy with per-field provenance badges indicating whether each value is set at the current level or inherited from a parent.
GET /v1/policies/{type}/{id}/effective now accepts a ?provenance=true query parameter. The response includes a policySource field with per-field attribution showing which hierarchy level set each effective value.
New users with pending org invitations are now shown them during sign-up, before a personal workspace is provisioned. Accepting an invite joins the invited org directly; skipping provisions a personal workspace as before.
Eval runs now default to deepseek-v4-flash as the solver model (previously glm-5.1). Runs without an explicit model override pick up the new default; the scorer default remains claude-sonnet-4-6.
The inventory scan detail page now shows which first-party skills were added to or excluded from the index, with timestamps for added skills and reasons for excluded ones. A Re-index first-party skills button triggers a fresh indexing pass from the same page.
The plugin registry no longer shows stale installed-plugin content. Registry overview pages now always display the plugin's own declared skill documentation instead of falling back to vendored internal files.
The managed requirements search dropdown in the policy editor now overlays the page correctly instead of pushing the save button and other form content down.
Sending an org invitation now immediately refreshes the pending invitations list without requiring a page reload.
Skills submitted from repositories whose default branch is not main no longer get stuck in a sync error loop. The skill's source branch is now correctly recorded at submission time.
Review Runs now show what was reviewed — a registry-linked badge for tile skills, or the skill name for direct CLI review runs.
Review run objects now include a subject field in their metadata: { type: "tile_skill", tileRef, registryUrl } for tile-triggered reviews, or { type: "skill", name } for CLI-initiated reviews. Runs created before this change omit the field.
Buttons rendered as links (navigation CTAs and similar) no longer show an underline on hover.
Skill-name validation no longer rejects names containing anthropic or claude as substrings. Skills such as claude-api that were previously blocked now validate and score correctly.
Tile quality scores now include completed review run results. Previously, review run scores were missing from the quality calculation.
Public tiles now enforce a platform-level critical-severity security threshold: publishing a version with critical-severity findings blocks moderation and prevents the version from becoming available, regardless of workspace security policy settings.
Claude Opus 4.8 (claude-opus-4-8) is now available as an agent model for eval runs.
Security severity levels in moderation failure messages now display as 'Critical', 'High', 'Medium', and 'Low' rather than internal identifiers.
Trend indicators on tile analytics now show 'New' when there is no baseline period to compare against, instead of an incorrect percentage.
Eval-run detail pages now live under workspace-scoped URLs (/workspaces/:workspace/eval-runs/:id), so the sidebar shows the correct workspace navigation. Existing /eval-runs/:id links redirect automatically for workspace members; public run links continue to work without authentication.
moderationStatus and moderationError are now included in the version objects returned by GET /v1/tiles, GET /v1/tiles/:ws/:tile, GET /v1/tiles/:ws/:tile/versions, and GET /v1/tiles/:ws/:tile/versions/:version. moderationStatus is one of pass, fail, error, pending, or skipped; moderationError carries a safe, human-readable message when present. The deprecated moderationPassed boolean is unchanged; moderationStatus is the recommended replacement.
The moderation status banner on tile pages now shows three distinct states: failed moderation (red), moderation error (orange), and review in progress (blue), each with copy tailored to the outcome.
Security review is now a required stage before a published tile version becomes available. After publishing, a version stays in pending moderation state until the security scan completes; a failed or errored scan results in a fail verdict and prevents the version from being accessible.
Tiles now show a pending moderation state immediately after publishing while security review runs; the version becomes available once review completes, and a failed scan keeps it offline.
Workspace member pages now include a short description explaining that org membership is required before a workspace role can be assigned, with a direct link to the org members page.
The error toast shown after a failed skill submission now displays a close button and auto-dismisses.
The allowUrlSources and allowFileSources fields have been removed from the managed-project policy — PUT /v1/workspaces/{workspaceId}/managed-project-policy now returns an error if either field is sent. Existing policies are migrated automatically.
Tiles and skills with no eval coverage now show an adjusted score — 80% of the review-based score at zero evals, ramping to full weight at three or more. Search ranking and score badges reflect this change.
The organization switcher has moved into the user menu with keyboard navigation. The workspace list now shows all workspaces across organizations, with an org badge when you belong to more than one.
GET /v1/workspaces/:id now accepts a workspace name in place of an ID.
Publishing to a workspace where you lack the publisher role now returns 401 Unauthorized with a message directing you to ask a workspace manager or owner — previously returned 404 Not Found.
The workspace selector in the 'Add member to organization' form now correctly requires a selection before submitting.
Workspace settings now include toggles for public publishing, security reviews, and eval runs — accessible to workspace managers and above.
New GET, PUT, and DELETE /v1/workspaces/{workspaceId}/managed-project-policy endpoints for managing workspace dependency-pinning policies.
Tiles in workspaces with security reviews disabled now show a disabled state instead of Pending on the security tab.
Starting an eval run or generating scenarios now returns 400 for workspaces with evals disabled.
New /changelog page summarising what shipped on Web and API each week.
Onboarding now captures role and use case during signup.
Refreshed copy on workspace and org role descriptions to make permissions easier to understand at a glance.
Creating a workspace now requires the org-admin permission.
Workspace created during onboarding now appears in the sidebar immediately without a page reload.
UUID validators relaxed to accept any valid hex format.
Org and workspace selectors stay populated after a page refresh.
Editing workspace settings now requires the edit_settings permission (manager or higher).
Legacy user-scoped API keys no longer accepted — switch to workspace- or org-level API keys.
API endpoints are now tagged as public or experimental in the OpenAPI spec.
Workspace Projects are now available to all customers.
Eval-result emails redesigned with a clearer score breakdown.
HTML files are now permitted in tile publishes.
Refreshed the favicon set across the web product.
Org admins can now change member roles.
Org admins can now remove members from the organization.
Eval-run table rows are now real links so command-click opens them in a new tab.
Pending org invitations can now be listed, resent, and revoked from the UI.
Added an organization switcher above the workspace selector.
Workspace owners can now delete empty workspaces.
Organizations can now be renamed directly from the UI.
A single invitation can now add a user to multiple workspaces in an organization.
Workspace managers can now browse organization members when adding workspace members.
Eval-run page now renders activation results from agent runs.
Eval-run progress now renders as a per-scenario segmented bar.
Pending eval runs are now labeled "In Progress".
New workspace settings page with a Block Public Tiles toggle.
Email notifications are now sent on eval completion.
Tile publishing now uses workspace-level API tokens.
Tile lists can now be sorted by score, security, and impact.
API-key authentication now accepted on GET /users/me.
Codex agent now available for eval runs.
Username now visible in the user dropdown menu.
Login and signup pages refreshed with a new tessellated logo background.
Improved the error messages when tile moderation fails.
Tiles with no score now show a Pending badge instead of a 404.
Authentication-provider buttons now use a consistent "Continue with" label.
Removed the in-product tile-generation flow and the Request Docs CTAs.
Directory fixtures now supported in the V2 eval-run API.
Custom login and signup screens replace the previous hosted auth experience.
CLI device-auth flow added so tessl login works from the terminal.
New API-key management UI rolled out.
Failed security reviews now appear in the UI.
Install CTA is now hidden on tiles and skills with critical-severity security findings.
Email invitations are now rate-limited.