Back to all releases

v1.3.0

Platform

// August 3, 2026

ChatGPT spend shows up in your cost analytics, and shadow MCP policies can allow by default

ChatGPT and ChatGPT Work usage now counts toward tokens under management and appears in your usage and cost views, split by product, so the AI spend you already had visibility gaps on lands in the same place as Claude Code, Codex, and Cursor. Shadow MCP policies gained a second posture: allow every server and name the ones to block, including servers your inventory hasn't seen yet. And the project assistant can act on risk findings rather than only listing them, suppressing a class of findings or dismissing one as a false positive.

Features

  • ChatGPT and ChatGPT Work usage counts toward your analytics #4851 - ChatGPT and ChatGPT Work now appear as distinct sources across labels, icons, and the onboarding live tail, with Work rows routed separately so the per-product split survives summarization. Their tokens count toward tokens under management and appear in usage and cost analytics from here on (#4850), matching how polled Claude Chat and Cursor usage already bills. Rows recorded before this release are retained but not backfilled. (Author: @daviddanialy)
  • Choose the default posture for a shadow MCP policy #4595 - When creating a policy, pick whether it blocks every server and allows exceptions or allows every server and blocks exceptions. The server selector flips to match, and the posture is read-only when editing because changing it means recreating the policy. (Author: @alx-xo)
  • Allow-all policies are enforced in the hook path #4594 - Under an allow-all policy, every externally hosted MCP server is permitted unless a block entry names its URL. A project can have only one enabled shadow MCP blocking policy, so two policies can never disagree at enforcement time. (Author: @alx-xo)
  • Name the servers to block on an allow-all policy #4593 - Allow-all policies carry a blocked URL list, mirroring the allowed URL list on block-all policies. The two lists are mutually exclusive by posture, and a blocked URL can name a server the project inventory hasn't observed yet, so you can block proactively. (Author: @alx-xo)
  • The assistant can resolve risk findings #4782 - New assistant tools suppress a whole class of findings, mark a specific finding a false positive, and reverse either action. The writes go through the same service methods the dashboard uses, so they stay gated on org admin and audited against the invoking user, and exclusion match values are fingerprinted before the model sees them so an equivalent exclusion is reused rather than duplicated. A rule breakdown tool answers "which rules fire most" in one small call, and the findings listing now defaults to 25 results, capped at 50, to keep triage from filling the assistant's context. (Author: @adaam2)
  • The assistant can create project skills #4790 - Hand the assistant complete SKILL.md content and it creates the skill under the same validation, versioning, permissions, and audit logging as creating one by hand. (Author: @speakeasyforgebot)
  • Readable assistant tool calls #4846 - The project assistant now announces each batch of tool calls with a short activity phrase, such as "Investigating failures in the last 30 days", which becomes the heading of a single collapsed group. Consecutive batches merge into one group whose heading advances as the investigation moves along, so a long tool run reads as progress rather than a wall of calls. (Author: @adaam2)
  • Sync metrics for device integrations #4811 - Sync runs and auto-paused schedules now emit OpenTelemetry metrics by provider and outcome, backing the failure-rate and auto-pause monitors for the MDM integrations rollout. (Author: @daviddanialy)
  • Risk findings storage prepared for reveal metadata #4794 - New columns on the risk findings store, plus matching changes to ingestion (#4818) and the backfill tooling (#4795), so findings can carry reveal metadata in a later release. No user-visible change yet. (Author: @dennnis-ez)
  • Contract value estimator on the billing page #4828 - For platform admins only, the TUM Contract section estimates what an enterprise account is worth under a committed platform fee with tiered overage or under pay-as-you-go, and flags accounts whose overage has outgrown their base contract. (Author: @simplesagar)

Bug fixes

  • Codex compliance rows no longer double count tokens #4813 - Codex compliance cost rows carried token counts on the same keys the usage stream uses, so an organization running both feeds had its token metering counted twice. Those rows now meter cost only, with the raw counts preserved under separate attributes because the compliance feed also covers surfaces the usage stream never sees, such as cloud-delegated tasks and code review. (Author: @daviddanialy)
  • OAuth token exchange works with strict providers #4848 - Client credentials are now form-urlencoded before going into the Authorization header, as the spec requires, fixing invalid_client failures against providers that decode them strictly, such as Snowflake. (Author: @danielkov)
  • Challenges page totals match what's on screen #4814 - Unattributed authorization challenges are excluded from the buckets endpoint, so pagination and totals agree with the rows rendered. (Author: @simplesagar)
  • Screen readers hear when the contract estimate fails #4829 - The failure message replaces a loading skeleton after the page has settled, so without a live region there was nothing to indicate the estimate had failed or that reloading would fix it. (Author: @simplesagar)
Sagar Batchu
Sagar Batchu
View on GitHub