Skip to main content
Connect your client

Changelog

Releases, incidents, security advisories, and compliance notices for the gotcontext.ai platform, covering the public API, Web Dashboard, MCP Gateway, and SDKs. Every entry carries severity, affected components, and a clear customer-action flag.

Filters

Surface:
Type:

Latest releases

1.66.51permalink
FeatureLowMCP GatewayAction required: No

AI agents can create and edit your workflows

Two new MCP tools let an AI author and edit saved workflows for you. It can create a new named workflow or save an edit to an existing one as a new version (edits never overwrite an old version, so run history stays honest). These only touch your saved graphs and spend nothing. An agent can only write workflows in the project its key is scoped to, and the tools tell it the limits up front: up to 100 nodes can be saved, but a single run submits at most 10 steps. Available on Pro and above.

Show details ▾
  • gc_workflow_create saves a new named workflow and its first version
  • gc_workflow_save saves an edit as a new version; an unchanged graph reuses the current one
  • Both are owner and project scoped, and spend nothing
  • The tools advertise the save limit (100 nodes) and the run limit (10 steps)
1.66.50permalink
FeatureMediumMCP GatewayAction required: No

AI agents can run your saved workflows

A new MCP tool lets an AI run one of your saved workflows and get a run id back right away (you can then check on it with the run-status tool). This one spends against your provider balance, so it passes the same safety checks as running a workflow from the dashboard: it is capped at 10 steps per run, multi-step runs stay off until enabled, an agent can only run a workflow in the project its key is scoped to, and there is a strict per-key rate limit that fails safe if it cannot be checked. Available on Pro and above.

Show details ▾
  • gc_run_from_workflow runs a saved workflow through the same engine as the dashboard
  • It reuses the exact spend and ownership guards the dashboard route uses, not a second copy
  • A per-key, per-tool rate limit fails closed: if it cannot read its counter, the run is refused
  • An agent can only run workflows in the project its key is bound to
1.66.49permalink
FeatureLowMCP GatewayAction required: No

AI agents can check the status of runs they submitted

Two new read-only MCP tools let an AI check on runs. It can look up one run (its status and each step’s output) or list your recent runs and what each cost. They only read; an agent only ever sees runs you submitted, and a project-scoped key only sees that project’s runs. Available on Pro and above.

Show details ▾
  • gc_run_status returns one run’s overall status plus each step’s status and output
  • gc_run_list returns your recent runs, newest first, with what each cost
  • Both are read-only and owner-scoped: no one else’s runs, no spending
  • A project-scoped key only sees that project’s runs
1.66.48permalink
FeatureLowMCP GatewayAction required: No

AI agents can list and open your saved workflows

Two new read-only MCP tools let an AI agent see the workflows you have saved and open one to inspect its steps, without you having to paste them in. They only read; they never run a workflow or spend anything, and an agent only ever sees workflows in the project its key is scoped to. Available on Pro and above.

Show details ▾
  • gc_workflow_list returns your saved workflows, newest first, with their latest version
  • gc_workflow_get opens one workflow at its latest version, including the full graph
  • Both are read-only and never submit a run or charge your provider balance
  • A project-scoped key only sees that project’s workflows
1.66.47permalink
ImprovementMediumWebAction required: No

Answers are formatted instead of showing raw markdown

Models write in markdown, and the transcript was showing it literally: headings as hash signs, emphasis as asterisks, tables as rows of pipes. Only code blocks were formatted. Answers now render properly, including headings, lists, tables, quotes, links and inline code. Code blocks keep their Copy and Preview buttons, and your own messages are still shown exactly as you typed them.

Show details ▾
  • Headings, lists, tables, block quotes, links and inline code all render
  • Wide tables scroll inside the message rather than stretching the page
  • Links open in a new tab and are limited to ordinary web and mail addresses
  • Images are shown as their description rather than loaded, so nothing is fetched on your behalf from a model-supplied address
  • Anything a model writes that looks like page markup is shown as text, never treated as part of the page
1.66.47permalink
FeatureHighWebAPIAction required: No

Chat now remembers what you already said

Every message was previously sent to the model on its own, so it had no idea what had been discussed a moment earlier and you had to restate context in each question. A conversation now carries its earlier turns, and follow-up questions work the way you would expect. Older turns fall out of the window once a conversation gets long; they are left out rather than summarised, so nothing is invented.

Show details ▾
  • Follow-up questions understand the conversation they are part of
  • Only the branch you are looking at is sent, so regenerating an answer does not send both versions
  • The model is not shown its own thinking from earlier turns, which would cost you tokens on every message
  • Replayed turns are counted in your spend limit exactly like the rest of the request
  • A conversation you do not own can never be replayed into your request
1.66.47permalink
FeatureMediumWebAPIAction required: No

Chat history is saved to your account instead of one browser

Conversations were kept only in the browser you happened to be using. A different machine showed nothing, and clearing site data destroyed them with no way to get them back. They are now stored on your account, so the same history follows you between devices and survives a cleared cache. Anything already in your current browser still appears until it has been replaced by newly saved conversations.

Show details ▾
  • Your conversation list and each transcript now load from your account rather than local browser storage
  • Search covers what was actually said in a conversation, not just its title
  • Regenerating an answer keeps the previous one instead of overwriting it, so you can go back to it
  • Saving history never interferes with a reply: if a conversation cannot be recorded, the answer you already received still stands
  • Conversations are private to your account, and a conversation that is not yours is indistinguishable from one that does not exist
1.66.47permalink
ImprovementLowWebAction required: No

You can paste an image straight into the chat composer

Attaching a screenshot previously meant saving it to a file first, or dragging it in. Pasting now attaches it directly, which is how most people expect to share one. Pasting ordinary text is unchanged.

Show details ▾
  • Paste a copied image into the message box to attach it
  • PNG, JPEG, GIF and WebP are accepted, the same formats the file picker takes
  • Pasting text still inserts text exactly as before
1.66.46permalink
Bug fixHighWebAPIAction required: No

Sending to a paid OpenRouter model no longer fails when an assistant is attached

Chat has two ways to send a turn: directly, or delegated to a saved assistant. Only the direct one had been taught that OpenRouter reports its own per-call cost, so a delegated turn on a paid OpenRouter model was refused with a message about the spend ceiling being unable to bound it — on a build whose notes said those models worked. Both statements were true, of different paths. They now apply one rule, and a test fails the build if they ever disagree again.

Show details ▾
  • A delegated turn now accepts every model your OpenRouter key can reach, matching the picker and the direct send path
  • Saving a role preference accepts the same models it always could send to, instead of refusing them one screen earlier
  • Spend limits are unchanged: an uncatalogued model still reserves at the highest rate we know, and settles on what the provider reports it actually cost
  • Providers that do not report their own cost are unaffected and still validated against the catalogue
1.66.46permalink
Bug fixHighWebAction required: No

The chat Canvas budget panel now shows your real quota

The Budget panel inside chat displayed a fixed usage bar under a heading that said it was live cost tracking. The figures were the same for every account and every project and were not read from anywhere. It now shows your actual usage for the billing period, and says plainly when that figure cannot be read rather than substituting a number.

Show details ▾
  • Usage and quota are read from your account instead of being fixed values
  • When the figure is unavailable the panel says so and links to Billing, rather than showing a placeholder that looks real
  • The Runs Monitor command in the chat command palette now opens, instead of doing nothing
  • The tool-catalog count is derived from the live tool surface instead of a number written by hand
1.66.45permalink
ImprovementMediumWebAPIAction required: No

Chat offers every model your OpenRouter key can reach

The model picker only listed free OpenRouter models, because the API refused any model missing from our own pricing catalogue and the picker narrowed itself to match. OpenRouter reports what each call actually cost, so that catalogue was never the source of truth there. Paid models now appear and work, and the savings receipt still uses the real reported cost rather than an estimate.

Show details ▾
  • Every model your OpenRouter key can reach now appears in the picker
  • Only genuinely free models claim the free lane, so a paid turn never shows a zero-cost receipt
  • Providers that do not report their own cost are unchanged and still validated against the catalogue
1.66.44permalink
ImprovementMediumWebAPIAction required: No

Chat no longer requires you to attach context first

Chat used to refuse to send anything until you attached context to compress, so typing a plain question got you an error instead of an answer. Context is optional now: ask whatever you like, and attach source material when you actually have some. A question with no context skips the compressor entirely and goes straight to your model, so it is as fast as any other chat.

Show details ▾
  • Send a message without attaching context
  • Contextless turns skip compression, so there is no added latency and no savings claim for work that did not happen
  • Attaching context still compresses it and still shows what you saved
1.66.43permalink
Bug fixMediumWebAction required: No

You can now find the page where you add a provider key

Adding your own OpenRouter, Anthropic or OpenAI key is what makes Chat work, and the page for it had no link anywhere in the product: not in the sidebar, not on the Settings page, and not in Chat itself, whose own note said to add a key in Settings without linking there. The only way in was typing the address by hand. It now has a sidebar entry under Workspace, an entry in the mobile menu, and a direct link from Chat.

Show details ▾
  • New "Provider keys" entry in the dashboard sidebar and the mobile menu
  • Chat now links straight to it instead of pointing at a page that did not have it
  • Reachable in English and French
1.66.42permalink
ImprovementLowWebAction required: No

The homepage now opens on the compression itself

The homepage opens with a live WebGL field of tokens that collapses as you scroll: a loose cloud ("You send the model everything") compresses into a dense core ("We compress it. Same meaning. A fraction of the tokens.") and lands on the result. It is the product shown rather than described. On phones, and for anyone who has asked their system for reduced motion or is on a data saver, the page shows a still frame instead, so nothing heavy loads.

Show details ▾
  • New scroll-driven opening sequence on the homepage
  • Falls back to a static frame on phones, reduced-motion, and data-saver settings
  • Layout stability improved: the page no longer shifts as the opening loads
  • Footer column labels now render at their intended size and spacing
1.66.41permalink
ImprovementLowWebAction required: No

Homepage rebuilt as one story instead of two

The homepage had been running two full landing pages back to back: you reached a "Ready to cut your token bill?" closing call-to-action about a third of the way down, and then a second, older pitch started over and repeated the same product story. The page was 19,075px tall on desktop and just under 36 phone screens on mobile. It is now a single narrative that says each thing once, roughly a third shorter, with one closing call-to-action at the end. Every section that carried something unique is still there: the live playground, the code-compression benchmarks, the measurement methodology, the setup command, and pricing.

Show details ▾
  • Removed six sections that repeated content already covered earlier on the page
  • One closing call-to-action instead of two
  • Reordered to try-it, then how-it-works, then proof, then setup, then pricing
  • Corrected the MCP tool count in the homepage ticker, which read a stale figure that disagreed with the pricing page and the section heading below it
  • Fixed a "coming soon" label that overflowed the edge of its card
1.66.40permalink
ImprovementLowWebAction required: No

Live compression stat on the homepage, simplified pricing layout

The homepage hero now shows a live, real-time average savings figure pulled from production traffic instead of a static number. The pricing page is reorganized around Free, Pro, and Business as the three primary plans plus a distinct Enterprise contact column; the Team plan is unchanged and still purchasable, now reachable from a "Need pooled seats for a team?" expandable section.

Show details ▾
  • Homepage hero shows a live average token-savings percentage (capped at the same conservative 50% figure used across the site)
  • Pricing page now leads with Free, Pro, and Business as the three primary cards, with Pro highlighted
  • Enterprise moved to its own distinctly styled "talk to sales" column
  • Team plan pricing and sign-up are unchanged, now under an expandable "Need pooled seats for a team?" section
1.66.39permalink
ImprovementLowWebAction required: No

Chat landing screen decluttered

The Chat landing screen crammed a lot on-screen at once: a long model description overlapping other text, an Export button with nothing to export yet, a permanent disclaimer paragraph, and four large description cards. All four are cleaned up so the composer is the clear focus, matching the density of other modern chat UIs.

Show details ▾
  • Fixed the model picker’s description text overlapping the "Load reference sample" link at narrower widths
  • The Export button now only shows once a conversation exists
  • The provider-key disclaimer moved into the Token Saver status pill’s tooltip instead of a permanent paragraph
  • The four quick-start templates are now a compact row of chips instead of four large description cards
1.66.38permalink
Bug fixLowWebAction required: No

Knowledge Agents tab now matches the Sources tab visually

The Agents tab under Knowledge (plan proposals, delegated tasks, A2A peers, MCP clients, MCP activity) was missing the card elevation and depth that the rest of the dashboard has, because a shared style layer wasn’t being loaded on that page. Panels now render with the same borders and shadows as everywhere else.

Show details ▾
  • Fixed a missing style-injection bug that left every panel on the Agents tab flat and borderless
  • Panels now show the same elevation, borders, and human/agent color hairline as the Sources tab
1.66.37permalink
ImprovementLowWebAction required: No

Knowledge Hub visual polish

The Knowledge dashboard’s stat cards, primary action buttons, and file-upload drop zone now carry more depth and clarity, matching the rest of the redesigned dashboard shell.

Show details ▾
  • Stat cards gained a subtle elevation shadow and hover lift
  • Primary buttons (Add source, etc.) now use a gradient fill with a soft glow
  • The file drop zone sits on its own surface with an upload icon for clearer affordance
1.66.36permalink
ImprovementMediumWebAPIAction required: No

Community Feed Ecosystem Taxonomy & Responsive Hardening

The community feed now supports expanded ecosystem filters (Agents, Skills, Ideas), restores the saved-bookmarks filter on the backend router, surfaces top MCP skills and submission CTAs in the rail, and prevents iOS Safari input zooming.

Show details ▾
  • Backend feed router allows the saved-bookmarks filter, restoring personal bookmark streams
  • Filter taxonomy expanded to include Agents, Skills, and Ideas alongside News, Blogs, and Benchmarks
  • Right rail features top audited MCP tools & skills with direct marketplace links and multi-action contribution buttons
  • Search input, composer titles, and comment textareas scale to 16px on mobile to eliminate iOS Safari viewport auto-zoom
  • Tablet 2-column feed and rail layout retained on iPad viewports without early collapse
  • Report and flag menus properly styled with theme-aware cards and elevated popovers
  • Light-mode active tabs, pills, and benchmark stat chips meet WCAG 2.2 AA contrast standards
1.66.35permalink
ImprovementMediumWebAction required: No

Dashboard Responsive & iOS Accessibility Hardening

Authenticated dashboard chrome and home widgets now respect iOS safe areas, keep menus scrollable inside the viewport, and meet WCAG 2.2 AA contrast and focus targets on phone and tablet.

Show details ▾
  • Mobile header menus scroll with overscroll containment inside the dynamic viewport, including home-indicator safe-area space
  • Metric cards stay a 2x2 grid on tablet and stack to a single column on iPhone SE-width viewports
  • Inline compression textarea uses 16px text on small screens so iOS Safari does not auto-zoom on focus
  • Dashboard topbar and container apply safe-area insets on notched devices
  • Light-mode muted text and cyan accent tokens retuned for WCAG 2.2 AA contrast parity
1.66.34permalink
ImprovementMediumWebAction required: No

Mobile navigation menu provides full-screen coverage with seamless scrolling

The mobile navigation drawer now covers the full viewport with an opaque backdrop and locks background scroll so underlying page elements do not bleed through.

Show details ▾
  • The mobile menu spans full viewport height without leaving gaps at the bottom
  • The header bar turns solid when the menu is open so scrolled links cleanly pass underneath
1.66.33permalink
Bug fixMediumWebAction required: No

Top navigation buttons and profile avatars no longer overlap the mobile menu

Desktop navigation actions and signed-in account buttons now cleanly collapse on smaller screens and tablets without colliding with the menu button.

Show details ▾
  • Account avatars and dashboard links collapse cleanly on screens below 1024px
  • The mobile menu trigger remains unobstructed across all mobile and tablet viewports
1.66.32permalink
ImprovementMediumWebAction required: No

Marketing pages work better on tablets and iPhones

Navigation now fits tablet screens, menus can scroll on smaller phones, and browser controls and safe areas no longer cover important page controls.

Show details ▾
  • Tablet-sized screens now use the compact navigation menu instead of crowded desktop links
  • The mobile navigation menu scrolls when its contents exceed the visible screen
  • Headers, menus and cookie controls respect iPhone safe areas
  • Text inputs no longer trigger Safari zoom when selected
  • Footer links and the playground sample action have larger touch targets
1.66.31permalink
ImprovementMediumWebAction required: No

Accessibility sweep across the public site, and the blog RSS feed now exists

Menus, buttons and links across the marketing site are now easier to hit on a phone, low-contrast text has been corrected, and keyboard users can reach content they previously could not. The blog RSS feed the site advertised is live.

Show details ▾
  • Every top-level navigation item now meets the minimum touch-target size, and their hover underlines line up with each other
  • "Skip to main content" now works on every marketing page. Previously it led nowhere on all but two
  • Fixed unreadable text on the highlighted pricing plan and on the comparison tables
  • Links inside body text are underlined, so they no longer depend on colour alone
  • Wide comparison tables can now be scrolled with the keyboard
  • Screen readers now announce the supported / not-supported marks in the comparison matrix, which were previously silent
  • The blog RSS feed at /blog/rss.xml is live; it lists published posts only
1.66.30permalink
ImprovementLowWebAction required: No

Find a past chat, and reach your connectors from Chat

The conversation list in Chat now has a search box and groups your chats by when you last used them, so a long history stays navigable.

Show details ▾
  • Search your conversations by title
  • Chats are grouped into Today, Yesterday, Previous 7 days and Older, newest first
  • Connectors is now reachable directly from the Chat sidebar
  • A chat with a missing or unreadable date is filed under Older rather than disappearing from the list
1.66.29permalink
Bug fixHighWebAction required: No

Chat is now a full-screen workspace, and you can send messages on a phone again

Chat opens as its own full-width workspace instead of a panel inside the dashboard, and the message box no longer collapses on small screens - the Send button was previously off the edge of the screen on a phone.

Show details ▾
  • On a phone the message box had shrunk to a sliver and Send sat past the edge of the screen, so a message could not be sent - the box and its controls are now on separate rows and both stay in view
  • Chat uses the whole window instead of sharing it with a second navigation column, giving the conversation noticeably more room
  • The conversation list slides in as a panel on small screens and is always visible on a desktop
  • A Dashboard link in the conversation list takes you back out
1.66.28permalink
ImprovementLowWebAction required: No

A 30-day savings trend on your dashboard home

Home now shows how many tokens you saved over the last 30 days as a chart, in the space that previously repeated links already in the sidebar.

Show details ▾
  • Tokens saved per day for the last 30 days, with your total and best day
  • The side panel no longer repeats Workbench, Knowledge, Analytics and Billing - they are one click away in the sidebar
  • The attention list at the top of the page now has a heading
1.66.27permalink
ImprovementLowWebAction required: No

Usage details from the sidebar, and a tidier header

The plan card at the bottom of the dashboard sidebar is now clickable and opens your usage for the period - compressions, tokens saved, savings rate and quota - with links to Analytics and Billing.

Show details ▾
  • Click the plan card to see usage detail; it works the same way when the sidebar is collapsed
  • Notifications, install and dismiss controls are now easier to hit, especially on touch
  • Header controls share one size and spacing, and the language control no longer outweighs everything else
1.66.26permalink
ImprovementLowWebAction required: No

Collapsible dashboard sidebar

The dashboard sidebar now collapses to a narrow icon rail and back, so you can give the page more room without losing navigation. Your choice is remembered.

Show details ▾
  • A button at the top of the sidebar collapses it to icons and expands it again
  • Hovering an icon in the collapsed rail shows the page name
  • Scrollbars across the app are now slim and match the theme in both light and dark mode
1.66.25permalink
ImprovementLowWebAction required: No

Redesigned dashboard navigation and a usage summary on Home

The signed-in dashboard has a clearer sidebar and now shows your usage for the current period the moment you land, instead of only on Billing or Analytics.

Show details ▾
  • Every navigation entry now carries an icon, and the current page is marked with an accent bar as well as colour
  • The sidebar stays in place while long pages scroll, and your plan with its monthly usage bar is pinned to the bottom of it
  • Home opens with compressions, tokens saved, savings rate and quota used for the current period
  • The dashboard uses more of the screen on wide displays
1.66.24permalink
ImprovementLowWebAPIAction required: No

News thumbnails now served from our CDN

News article thumbnails moved from a metered secondary store to the Vercel CDN - faster, cheaper, and stops public image reads from hitting a per-month bandwidth cap.

Show details ▾
  • Public thumbnails now served via Vercel Blob behind image optimization
  • No account or API change
1.66.23permalink
FeatureLowWebAction required: No

gotcontext-memory is now listed on the products page

The /products index and a new /products/gotcontext-memory page now list gotcontext-memory: local markdown memory with human-gated dreaming for coding agents (MIT, open source).

Show details ▾
  • New open-source product card with install commands (init, dream, review accept).
  • Every claim verified against the gotcontext-memory README on the day it was written.
1.66.22permalink
Bug fixMediumAPIAction required: No

Savings calculators now use accurate model prices for gpt-5.6 Luna and Terra

Cost-savings estimates for gpt-5.6-luna and gpt-5.6-terra were using rates up to 10x higher than the real OpenRouter price, so the dollar savings those models showed were overstated. Rates now match the provider catalog exactly.

Show details ▾
  • Corrects gpt-5.6-luna ($1/$6 to $0.1/$0.6 per MTok) and gpt-5.6-terra ($2.5/$15 to $1/$6) to live OpenRouter rates.
  • Cache-read rates corrected too ($0.10 to $0.01 and $0.25 to $0.10 per MTok).
  • New usage rows are stamped with the corrected pricing catalog version.
1.66.21permalink
Bug fixMediumAPIAction required: No

Billing card can tell Business $199 from Dedicated $499

Subscriptions now store the Polar product id, so the dashboard amount for enterprise no longer always shows $199 when the customer is on Dedicated.

Show details ▾
  • Adds subscriptions.polar_product_id (nullable; filled on next webhook).
  • Dedicated product id maps to $499; Business and legacy null rows stay $199.
1.66.19permalink
ImprovementMediumWebAction required: No

Sign-in and dashboard home now open Priority, not the empty feed

After sign-in, clicking the logo, pressing G then D, or visiting /dashboard now opens Priority: the attention queue that shows what needs you. The community Feed is still one click away in the nav (and G then F).

Show details ▾
  • Fixes the remaining first-run routes that still dumped new users onto an empty community stream.
1.66.18permalink
Bug fixLowWebAction required: No

Docs header buttons no longer clip on narrow phones

On a 375px-wide phone the documentation header row was ~22px too wide, so the theme-toggle button clipped off the right edge. The row now tightens its spacing at that width and every control fits.

Show details ▾
  • Verified at a true 375px viewport (iPhone-mini width) with no horizontal page scroll.
1.66.17permalink
ImprovementLowWebAction required: No

Chat receipts now say what you saved, not what you spent

The dollar figure on a chat answer was labelled as an estimated cost, but it has always been the amount compression SAVED you, never the answer’s actual price. It now reads "saved" so the number means what it is. No amounts changed; only the label.

Show details ▾
  • The per-answer chip reads "≈$X saved" and the greeting matches.
  • The response now has a named, guarded contract so a future field change cannot silently break the display.
1.66.16permalink
FeatureMediumWebAPIAction required: No

Chat with free models at zero cost

With an OpenRouter key connected, the chat model picker now lists that account’s free-tier models. Turns on a free model cost nothing and are billed to nobody: the receipt says "Free model: compression off" because there is no spend to reduce. Paid models keep the full compression pipeline and savings receipts exactly as before.

Show details ▾
  • Free-model turns are priced at exactly zero at every layer, including spend-ceiling accounting.
  • Compression runs only where it saves you money: paid models and your paid provider keys.
1.66.15permalink
FeatureLowWebAction required: No

Connect OpenRouter with one click

Settings now has a Connect OpenRouter button. It signs you in on OpenRouter’s own page and stores the resulting key encrypted in your account, with no copy-pasting. A free OpenRouter account gives you daily access to their free model tier on your own quota.

Show details ▾
  • The connection uses OpenRouter’s standard authorization flow; your OpenRouter password never touches gotcontext.
  • Free models may have different data policies than paid ones; the button says so up front.
1.66.14permalink
FeatureLowAPIWebAction required: No

OpenRouter is now a supported provider for your own API keys

You can store an OpenRouter API key alongside OpenAI and Anthropic keys in Settings. A free OpenRouter account includes daily access to their free model tier on your own quota, so chat can use those models at no per-token cost to you. Model enumeration for a stored key lists everything your OpenRouter account can reach.

Show details ▾
  • OpenRouter keys are stored encrypted, the same as other provider keys.
  • Free-tier OpenRouter models are billed by OpenRouter at zero token cost on your own account.
1.66.12permalink
FeatureMediumWebAction required: No

Chat is now a full cockpit: files, agents, skills, and tools in one place

The chat page is redesigned as a single working surface. A sidebar lists your conversations next to the rest of the platform (Knowledge, Agents, Skills, Workbench, Analytics), and a new attach menu on the composer lets you add files and images straight into your Knowledge base, pin an agent, or jump to a skill: all without leaving the conversation. A running meter shows the tokens compression has saved you across the conversation.

Show details ▾
  • Attach files or images from the composer; they are stored in Knowledge and referenced in your next message.
  • Pin one of your agents to the conversation, or browse the skills marketplace from the same menu.
  • Every answer keeps its savings receipt, and the conversation total is always visible.
1.66.11permalink
FeatureMediumWebAPIAction required: No

Chat, Workflows, Assistants, and Runs are now open to everyone

Four surfaces that were staged to administrators are now in every account’s navigation, on desktop and mobile. Chat calls the model with your own stored provider key and routes every turn through the compressor, showing what each answer cost. Workflows, Assistants, and Runs let you build, share, and execute multi-step agent graphs.

Show details ▾
  • Chat opens with a modern composer; attach context and see per-answer savings.
  • Your provider key is stored encrypted and is never shown back to you.
  • All four surfaces appear under their groups in the sidebar and the mobile menu.
1.66.10permalink
ImprovementLowWebAction required: No

Chat redesigned around a modern composer

The chat surface now opens with a single message composer front and center, in a familiar assistant-style layout. Context you want compressed attaches to the composer instead of occupying a permanent form block, conversations read in a clean centered column, and the per-answer compression savings are easier to spot.

Show details ▾
  • Composer-first start screen; context is an attachable panel with a character count.
  • Messages render in a focused reading column; your turns as bubbles, answers as text.
  • The savings receipt on each answer is more prominent: it is the point of the product.
1.66.9permalink
ImprovementLowWebAction required: No

Projects and Analytics pages read more clearly

The New Project button no longer stretches across the page with a glow; it now sits as a standard compact button. On the Free-plan Analytics preview, the sample table is easier to read while remaining clearly marked as a sample.

Show details ▾
  • Projects: compact primary button, consistent with the rest of the dashboard.
  • Analytics: the locked sample preview is legible instead of heavily blurred.
1.66.8permalink
FeatureLowAPIAction required: No

Stored provider keys can now list the models they unlock

If you have saved a provider API key, a new endpoint returns the models that key can use, fetched live from the provider and cached briefly. This powers the upcoming model picker: connect a key once and choose from your own available models instead of typing model names by hand.

Show details ▾
  • GET /v1/provider-credentials/{id}/models for Anthropic and OpenAI keys.
  • Results are fetched with your stored key and never expose the key itself.
  • A rejected key returns a clear error so you know to rotate it.
1.66.7permalink
ImprovementLowWebAction required: No

Sidebar navigation regrouped around how you actually work

The dashboard sidebar previously spread sixteen destinations across seven groups, three of which held a single item. It now reads as five groups that follow the product loop: Home, Run, Build, Measure, and Workspace. Every page keeps its name and address, so bookmarks and habits carry over.

Show details ▾
  • Workbench now sits beside Home and Feed, one click from login.
  • Build gathers Knowledge, Projects, Tools, Profiles, and Integrations.
  • Workspace gathers Settings, Billing, Teams, and Feedback.
1.66.6permalink
FeatureLowWebAction required: No

Dashboard Home now uses the full width and lets you run a compression instantly

Home previously rendered in a narrow single column with unused space on the right. It now lays out in two columns: your attention queue and an instant try-it compression box on the left, with the platform overview alongside. You can paste text or load a sample and see real token savings without setting up an API key first.

Show details ▾
  • The try-it box is the same no-signup demo from our public pages, now one click from login.
  • On smaller screens the layout collapses back to a single column.
1.66.5permalink
ImprovementLowWebAction required: No

Dashboard pages fit more on screen with compact headers and a refined sidebar

Every dashboard page previously opened with an oversized title that pushed your actual content below the fold. Titles are now compact, and the sidebar highlights your current page with a subtle accent tint instead of heavier styling.

Show details ▾
  • Page titles reduced to a standard enterprise size so tables and charts start higher on the page.
  • Sidebar links are easier to scan, and the active page is marked with a soft accent highlight.
  • This is the first slice of a broader dashboard refresh; navigation grouping improvements come next.
1.66.4permalink
Bug fixMediumWebAction required: No

Finishing setup now takes you to your dashboard instead of the community feed

After completing the five setup steps, the "Go to dashboard" button sent you to the community feed rather than your own dashboard. For a brand-new account the feed has little to show, so the first thing you saw after setting up was an empty page instead of your own workspace.

Show details ▾
  • The button now opens your dashboard home, which shows what needs your attention and the tools available on your plan.
  • The community feed is unchanged and still reachable from the navigation.
1.66.3permalink
Bug fixMediumWebAPIAction required: No

Per-call savings rates now follow the same rule as the rest of the dashboard

The savings figure on individual calls (in Logs, on a call detail page, in the command palette and on the overview) was still worked out separately from every other page, so the same call could read one number in Logs and another in Analytics. It now comes from the same place as the rest.

Show details ▾
  • A call with nothing to measure showed 0%, which read as "this saved you nothing". It now shows a dash, because no measurement was made.
  • A call whose stored token counts are inconsistent could display a rate above 100%. Those now show a dash too, and are flagged for us to investigate.
  • Rates round the same way here as everywhere else, so a figure no longer shifts by a decimal point when you open it in a different view.
  • CSV exports leave the cell empty rather than writing a 0 for a call that was never measured.
1.66.2permalink
Bug fixMediumWebAPIAction required: No

Your savings rate is now the same number on every page

Settings, Analytics and the per-project page each worked the figure out themselves, and each did it slightly differently — so the same account and the same month could read 85% on one page and 85.4% on another. They all read one number from the server now.

Show details ▾
  • Settings rounded to a whole number, so a 99.6% saving displayed as a flat 100%. It no longer rounds a near-miss up to a perfect score.
  • When there is nothing to measure, or the underlying numbers cannot be trusted, every page now shows a dash instead of inventing a 0% or a 100%.
  • Rates are shown to one decimal place everywhere.
1.66.1permalink
Bug fixHighWebAction required: No

The mouse wheel works again everywhere in the dashboard

For a short window, the mouse wheel did nothing on dashboard pages. The page still moved if you dragged the scrollbar or used the keyboard, so it looked like one page was broken rather than all of them. It affected every dashboard page that was long enough to scroll, and it is fixed.

Show details ▾
  • Reported against the activity feed, which is the longest page and so the one where it was obvious. The cause was in the shared header, so every dashboard page had it.
  • The header menus were holding a scroll lock that is only meant to be held while a menu is actually open. They now release it, and the dashboard header no longer freezes the page behind an open menu either.
  • Covered by a test that fails if any header menu takes the page scroll again.
1.66.0permalink
FeatureInformationalAPIWebAction required: No

Save an assistant once, and let a colleague run it on their own account

You can now save a named assistant — a model plus the system prompt it always runs with — and share it with someone else. They run it on their own key, in their own project, at their own cost; sharing never gives anyone access to your provider key or your project. They also have to accept the share before it will run for them.

Show details ▾
  • Editing an assistant does not change what people you have shared it with are running. They stay on the version they accepted until you share the new one and they accept again.
  • Revoking a share takes effect immediately, and the record of it is kept rather than deleted.
  • The model list only offers models we can actually send to, so an assistant cannot be saved against one that would fail the first time somebody ran it.
1.65.0permalink
FeatureInformationalWebAction required: No

Dictate your instruction instead of typing it

The chat composer has a Dictate button that turns speech into text. It uses your browser's own speech recognition, so nothing is sent to us. Where your browser can transcribe on-device it does, and where it cannot, the page tells you your audio goes to your browser vendor rather than doing that quietly.

Show details ▾
  • Dictated text is added to what you have already typed, never replacing it.
  • The button is simply absent in browsers without speech recognition, rather than present and broken.
  • A denied microphone says so instead of appearing to listen forever.
1.65.0permalink
FeatureInformationalAPIAction required: No

Reuse one document across several questions and pay a tenth for it

Chat completions can now mark your context so the provider caches it. Ask five questions about the same document and the document is charged in full once, then at about a tenth of the rate for the rest. It is off unless you ask for it, because a context you never reuse costs slightly more to cache than not to, and only you know which of those you are doing.

Show details ▾
  • Send "cache_context": true to turn it on for a request. The default is off.
  • Worth it from the second question about the same context, within about five minutes.
  • Leave it off for one-shot calls — caching something read once costs about 25% more.
  • The reply now carries cache_read_tokens and cache_write_tokens so you can see whether it actually worked rather than assuming.
  • Reads above zero mean it hit. Both zero means the provider skipped caching, usually because the context was too short, and you were charged nothing extra for asking.
  • Anthropic models only. OpenAI already does this automatically at no extra cost, so the setting is ignored there rather than rejected.
1.65.0permalink
FeatureInformationalAPIWebAction required: No

Build a workflow once and run it as often as you like

A new Workflows page lets you wire steps together on a canvas, name the result, and run it. Until now a workflow only existed as a by-product of submitting a run, so there was nothing to come back to. A saved workflow keeps every version, and a run records exactly which version it executed.

Show details ▾
  • Drag steps around, connect them, and give each one a model or a role.
  • A step set to a role uses whichever model you picked for that role in Settings.
  • Saving an unchanged graph says so instead of claiming it saved something.
  • Connections that would create a loop are refused with the reason, since a run has to finish.
  • Each run records the version of the graph it ran, so history stays honest after an edit.
1.65.0permalink
FeatureInformationalAPIWebAction required: No

See and set your own spend limit

You can now cap what your runs may spend, up to your plan maximum, from a new Spend limit page. It shows three things rather than one: the limit you chose, your plan maximum, and what is actually enforced right now. If you move to a smaller plan your own choice is kept, not overwritten, so it applies again when you move back up.

Show details ▾
  • Set any limit from $1 up to your plan maximum.
  • A value above your plan maximum is refused and explained, never quietly reduced.
  • Choosing "Use plan maximum" clears your limit rather than storing the current cap.
  • A downgrade keeps the limit you chose; it simply stops applying until you upgrade.
1.65.0permalink
FeatureInformationalAPIWebAction required: No

Choose which model runs each role

A run step can name a role — orchestrator, planner, coder, validator or researcher — instead of naming a model directly. The new Role models page lets you decide what each of those runs on, so you can put planning on a stronger model and routine work on a cheaper one. Roles you have not set are shown as inherited, along with what they currently resolve to.

Show details ▾
  • Pick a model per role; an explicit model on a step still wins over its role.
  • Roles you have not configured show as inherited, with the model they use.
  • Choosing Default clears your choice so the role follows the default again.
  • Only models the API can actually call are offered.
  • A model your spend limit could not price is refused when you save it, not later when a run fails.
1.65.0permalink
FeatureInformationalAPIWebAction required: No

A Runs page showing every run you have submitted and what it cost

Runs were previously only readable one at a time, and only if you already had the run id. The new Runs page in your dashboard lists them newest-first with status, step count, plan and cost. The cost shown is the same figure your spend limit is measured against, and a run whose cost is still partly reserved rather than final is marked, so an estimate is never presented as a finished bill.

Show details ▾
  • Lists your runs newest-first, with status, surface, step count and plan.
  • Shows cost per run, using the same number your spend limit counts.
  • Marks a cost that still includes reserved, not-yet-settled spend.
  • Shows only your own runs.
1.65.0permalink
FeatureInformationalAPIAction required: No

Runs can have more than one step, each on its own model

The run engine executes multi-step runs, where each step names its own provider and model, so one run can put a planning step on one model and a coding step on another. Submitting multi-step runs is not open on this deployment yet: it stays closed until a per-run spend ceiling and a way to read a run back both exist.

Show details ▾
  • Each step carries its own provider and model.
  • Submitting a multi-step run is disabled by default while the safeguards are built.
  • Steps run in order; the next is only started once the previous one settles.
  • A failed or abandoned step ends the run as failed. Later steps are never charged.
  • Cancelling a run stops it advancing to the next step.
1.65.0permalink
ImprovementInformationalAPIWebAction required: No

The model list now tells you which models we can actually call

GET /v1/models returns a callable flag on every entry, and the chat model picker is populated from it instead of a short built-in list. The catalogue prices more models than we can send a request to, so a picker built from it could offer choices that failed on use. Now it offers only what works.

Show details ▾
  • Every model in GET /v1/models carries callable: true or false.
  • The chat picker shows the full callable catalogue rather than two fixed entries.
  • Pricing fields on that endpoint are unchanged.
1.65.0permalink
FeatureInformationalAPIAction required: Yes

Submit multi-step runs with POST /v1/runs

You can submit a run — one or more provider calls — and get a run id back immediately. The work runs in the background and survives restarts, so a long run is no longer tied to your HTTP connection staying open.

Action required

Runs require a key with the new runs:write scope. Existing keys need to be re-minted or updated to include it; a key with only compress:write will be refused.

Show details ▾
  • Returns 202 with a run id as soon as the run is durable.
  • Execution continues in the background and is retried if a worker restarts.
  • runs:write also grants compress:read, since a run compresses its context before dispatch.
  • Rate limited to 60 requests per minute, like other endpoints that spend your provider budget.
1.64.2permalink
FeatureMediumAPIAction required: No

You can now read back your own skill submissions

Until now, submitting a skill to the marketplace meant it vanished from your view. Both existing read endpoints only serve published skills, so there was no way to check whether yours was still in review, or to see why it was rejected. GET /v1/skills/mine returns your own skills at any status, together with the security scan verdict that decided their fate.

Show details ▾
  • Returns your drafts, in-review, published, rejected and withdrawn skills, newest-updated first.
  • Each entry carries the full scan result -- severity, recommendation and the individual findings -- so a rejected submission tells you what to fix instead of leaving you guessing.
  • You can also now withdraw a submission that is still in review. Previously only a reviewer could move it, so a mistaken submission sat in the queue until someone acted on it.
  • Pages are capped at 25 entries because each one carries the full skill document; pass limit and offset to page through.
1.64.2permalink
ImprovementMediumAPIWebAction required: No

Your past savings figures no longer change when a model price changes

We used to work out the dollar value of your saved tokens at the moment you looked at it, using whatever the model cost that day. So when a provider cut a price, your savings for last month quietly dropped to match, even though nothing about last month had changed. Compressions now record their dollar value when they happen, and that recorded value is what we report. A price change from here on affects new usage only.

Show details ▾
  • Per-model savings are now reported from the price that applied at the time of each compression.
  • The same rule covers usage broken down by API key, the per-project analytics summary, and the weekly digest email, so every place we quote a dollar figure agrees about the same period. The digest in particular used to quote a different number for the same past week each time a price moved.
  • Usage with no stored price is still valued at current rates. The by-model response names how much of each figure that is, in a new estimated_portion_usd field, and the dashboard marks those figures as calculated rather than recorded. Most of that is usage from before this change, though a compression worth less than our smallest stored unit also has no stored price.
  • The totals themselves are unchanged for usage recorded before this release. Nothing was recalculated or backfilled.
1.64.0permalink
FeatureInformationalAPIWebMCP GatewayAction required: No

Live agent task board

See every task your agents are working on in real time, on a new Delegated tasks board in the Knowledge dashboard. Each task shows a full timeline of who did what, human or agent, and you can reassign a stuck task right from the board.

Show details ▾
  • A new owner-scoped board lists your delegated agent tasks with live status updates.
  • Each task expands to an attributed event timeline showing whether a human or an agent performed each step.
  • Reassign a pending, claimed, or expired task to a different agent directly from the board.
1.44.17permalink
ImprovementLowWebAction required: No

Prompt cache optimization now documented, with an SDK helper

The compression API can preserve a byte-stable prompt prefix and return cache breakpoints for Anthropic, OpenAI, and Gemini, so your downstream provider can reuse its own prompt cache across repeat calls instead of reprocessing the same prefix every time. This capability already existed on the compression API; it now has a docs page, a pricing-page FAQ entry, and a documented SDK helper so you can find it and use it.

Show details ▾
  • New docs section covering the cache_policy request field, the cache_breakpoints response, and how each provider enforces its own minimum prefix size.
  • Documented the apply_anthropic_breakpoints / applyAnthropicBreakpoints helper for stamping cache markers onto an Anthropic messages array.
  • Added a pricing-page FAQ entry describing it as a capability of the compression API.
1.63.5permalink
Bug fixMediumAPIMCP GatewayAction required: No

More accurate prompt-cache guidance, plus newer model support

The compression API now uses each provider's current minimum-cacheable-token thresholds, so its cache-breakpoint guidance is correct across Anthropic, OpenAI, and Google. The latest models (Claude Sonnet 5 and Opus 4.8, GPT-5.6, Gemini 3.1 and 3.5) are now recognized for caching.

Show details ▾
  • Corrected the minimum prompt length required to enable prompt caching on several models, verified against each provider's live documentation.
  • Added cache-support metadata for the latest Anthropic, OpenAI, and Google models.
1.44.17permalink
FeatureLowAPIWebAction required: No

Star your projects and pin them to a Favorites rail

You can now star a project to pin it to a personal Favorites rail at the top of the dashboard sidebar, so the projects you use most are always one click away. The star lives on each project card; the rail is private to you and stays hidden until you star something.

Show details ▾
  • A star on each project card adds it to your Favorites; tap again to remove it.
  • A Favorites rail at the top of the sidebar lists your starred items, scoped to you.
1.44.17permalink
ImprovementLowWebAction required: No

Review agent plan proposals at keyboard speed

The plan proposals panel now has Linear-style keyboard shortcuts so you can triage an agent's change-proposals without reaching for the mouse. Use J and K to move through the list, E to expand a proposal (and again to merge it), and R to reject.

Show details ▾
  • J / K (or the arrow keys) move a keyboard focus through your open proposals.
  • E expands the focused proposal, then merges it on a second press (so you always see the diff before it lands); R rejects an expanded one; Escape collapses.
1.44.17permalink
ImprovementLowWebAction required: No

Reach the Skills and MCP marketplaces from the signed-in dashboard

The dashboard navigation now links to the Skills marketplace and the free MCP tools, alongside Documentation, in a Resources group. Previously these were only reachable from the logged-out marketing navigation.

Show details ▾
  • Added "Skills marketplace" and "Free MCP tools" links to the dashboard sidebar Resources group.
1.63.3permalink
FeatureLowAPIWebAction required: No

Save posts and revisit them from the new "Saved" filter

You can now Save (bookmark) any post in the community feed and find everything you have saved under a new "Saved" filter. Saving is one tap on the post, and the Saved view is private to you.

Show details ▾
  • A Save button on each feed post bookmarks it; tap again to unsave. It appears when you are signed in.
  • A new "Saved" filter (next to "Mine") lists just your bookmarked posts, scoped to you so it never shows anyone else's.
1.63.2permalink
FeatureLowAPIWebAction required: No

Find your own posts with the new "Mine" feed filter

The community feed has a new "Mine" filter that shows only the posts you have authored, so you can find and revisit your own contributions in one click. It sits next to "All" whenever you are signed in.

Show details ▾
  • A "Mine" filter on the feed shows only your authored posts, scoped to you from your session so it never surfaces another member's posts.
  • Shown only when you are signed in; it is a personal view and is intentionally not shareable by URL.
1.63.1permalink
FeatureLowAPIWebAction required: No

Get notified when someone comments on your post

When another member leaves a comment on one of your feed posts, you now get an activity notification (and a web push, if you have those on) so you can jump back into the conversation. Before this, only replies to your own comments notified you, never a fresh comment on your post.

Show details ▾
  • A top-level comment on your post now creates a "commented on your post" notification for you, the author.
  • You are never notified about your own comment, and comments on auto-published system posts notify no one.
  • Delivery is best-effort and runs off the request path, so it never slows down or blocks posting a comment.
1.63.0permalink
FeatureLowAPIMCP GatewayAction required: No

Push notifications for cross-agent task delegation

When you delegate a task to another of your agents (the gc_a2a_task_* tools) and it changes state — approved, claimed, completed, or cancelled — you can now receive a webhook instead of polling for status. Register a webhook and subscribe to the new "a2a.task.status" event.

Show details ▾
  • A new "a2a.task.status" webhook event fires when a delegated task is approved, claimed, completed, or cancelled.
  • Delivery rides the same durable, retry-backed webhook pipeline as other events, so a notification is not lost if delivery is briefly interrupted.
  • The notification carries only lifecycle metadata (task id, status, type, title); re-fetch the full signed task state through the API.
Webpermalink
ImprovementLowWebAction required: No

The Knowledge page is now one room for you and your agents

The Sources and Agents views now share one identity -- one title, one tab bar, one sidebar entry -- and the page reads as a single shared workspace. Color now tells you who does what: blue marks the surfaces where you decide, cyan marks what your agents are doing.

Show details ▾
  • A presence row under the tabs shows both sides of the room -- you (with your source count) and your connected agents -- from either view.
  • First-run is staged honestly: no zero-count stat billboards, one clear add-source action, and query suggestions appear only once they can return results.
  • The Agents view is organized into labeled zones -- what needs your decision, your connections, and recent agent activity -- with peers and clients side by side on wide screens.
  • Every count shown is real loaded data; nothing is invented or padded while loading.
APIpermalink
ImprovementLowAPIMCP GatewayAction required: No

Verbose logs and stack traces now compress in tool-output compression

Repeated stack traces and timestamped log lines used to pass through the tool-output compressor untouched (0% savings). They now compress, while every execution-critical identifier -- file paths, error codes, request IDs, UUIDs -- is preserved.

Show details ▾
  • Applies to the tool-output compression endpoint, the CLI output filter tool, and the wrap proxy.
  • Only kicks in when the standard log de-duplication left the output nearly uncompressed, and only keeps the result when it is genuinely smaller.
  • The start and end of every collapsed run are kept verbatim, so the time span and event count stay visible.
  • Opt-in and conservative by default -- existing integrations that did not request the fallback are unchanged.
Webpermalink
FeatureLowWebAction required: No

Browse community skills with a live security-scan verdict

A new Skills page lets you browse community-submitted agent skills. Every listing carries a live security-scan verdict, so you can see what an automated scan flagged before you install.

Show details ▾
  • Browse skills by category, search by name or tagline, and sort by newest or top.
  • Each listing shows a scan verdict badge: No issues flagged, Review recommended, or Not recommended. The scan is advisory, not a guarantee.
  • Open a skill to see the full scan findings, an install snippet you can copy, and the skill's documentation.
Webpermalink
ImprovementLowWebAction required: No

Smaller cookie-consent prompt

The cookie-consent prompt is now a small card in the bottom-left corner instead of a bar spanning the whole bottom of the page. Your choices are unchanged: accept or decline analytics cookies, and declining still opts you out.

Show details ▾
  • The prompt no longer covers page content across the full width of the screen.
  • Accept and Decline work exactly as before; your saved choice is respected.
Webpermalink
FeatureLowWebAction required: No

Write your own posts in the community feed

You can now author your own posts right from the dashboard feed. A composer at the top of the feed lets you write a titled post in Markdown and share it with the community. Posts are reviewed before they go live, so what you write joins the feed once it is approved.

Show details ▾
  • Click "New post" at the top of the feed to open the composer.
  • Write in Markdown with a Write / Preview toggle; Cmd or Ctrl plus Enter publishes.
  • Every post goes through moderation before it appears in the feed.
MCP Gatewaypermalink
FeatureLowMCP GatewayAction required: No

Your AI agents can now post to the community feed

A new gc_publish_post MCP tool lets an AI agent connected to your Pro (or higher) key author a post into the gotcontext community feed. The post is created as a draft and goes through the same human moderation queue as a post you write yourself, so an agent can submit but never publish on its own.

Show details ▾
  • Available on Pro and above.
  • Give the tool a title and a Markdown body; it returns the new post id, slug, and status.
  • Every agent-authored post is reviewed by a human before it appears in the feed.
Webpermalink
FeatureLowWebAction required: No

New Priority view: see what needs your attention across the whole platform

A new Priority page in your dashboard gathers everything that needs a look (approaching usage limits, project budget alerts, pending share requests, expired agent task delegations, plan proposals awaiting review, and billing issues) into one short, ranked list. When nothing needs you, it simply says you are all caught up.

Show details ▾
  • Find it under Home in the dashboard sidebar.
  • Items are sorted by urgency, each linking straight to where you can act.
  • New here? The list opens with a one-click prompt to run your first compression.
Webpermalink
ImprovementLowWebAction required: No

Dashboard navigation reorganized around what you're trying to do

The dashboard sidebar is now grouped by intent instead of by feature category: Home, Try, Run, Memory, Measure, Configure, and Admin. Playground is renamed Workbench and Queue is renamed Workflows -- same pages, same shortcuts, just clearer names. Agents & Sharing, previously only reachable by typing the URL directly, now has its own entry under Memory next to Knowledge. The command palette (press Cmd+K, or Ctrl+K on Windows/Linux) can now find Agents & Sharing, Feedback, and Benchmarks by name, and searching "workbench" or "workflows" finds the right destination too. Admin pages, Teams, Webhooks, Profiles, and the main dashboard page also now share one consistent page-title style.

Show details ▾
  • Sidebar sections are now Home, Try, Run, Memory, Measure, Configure, and Admin -- grouped by what you're doing, not by feature category.
  • Playground is now called Workbench and Queue is now called Workflows. Same pages, same routes, just clearer names.
  • Agents & Sharing has its own sidebar entry under Memory, next to Knowledge.
  • The command palette can now find Agents & Sharing, Feedback, and Benchmarks, plus the new Workbench/Workflows names.
  • Admin pages, Teams, Webhooks, Profiles, and the dashboard home page now share one consistent page-title style.
APIpermalink
FeatureLowAPIMCP GatewayAction required: No

Reassign a delegated agent task to a different agent

If an agent you delegated a task to has gone quiet or been revoked, you can now reassign the same task to a different one of your agents instead of starting over. The original task keeps a full audit trail and moves to a reassigned state; the new assignment starts in draft for your approval, just like any newly delegated task. Available as an MCP tool (gc_a2a_task_reassign) and from the dashboard.

Show details ▾
  • A new gc_a2a_task_reassign MCP tool reassigns a pending, claimed, or expired delegated task to a different agent.
  • The original task keeps a full audit trail of the reassignment; the new assignment always starts in draft and needs your approval.
  • Reassignment is always something you choose to do -- tasks are never automatically reassigned.
APIpermalink
FeatureLowAPIMCP GatewayAction required: No

Delegated agent tasks that expire now surface warnings you can acknowledge

When a task delegated to another agent passes its deadline without completing, it previously just moved to an expired state that was easy to miss. Now the task owner gets a bell notification and an email (email respects your opt-out setting), agent tool responses for the task inbox and task status carry a warnings list naming the expired task, and tasks approaching their deadline while the assigned agent has been quiet get an early warning. A new gc_a2a_task_ack tool lets you acknowledge an expired task to clear its warning once you have handled it. Notifications fire once per state change -- no repeats on later sweeps.

Show details ▾
  • Expired delegated tasks trigger a bell notification and an opt-out-respecting email to the task owner.
  • Task inbox and task status tool responses include a warnings list while an expired task is unacknowledged.
  • Tasks nearing their deadline with a quiet or revoked assignee get a one-time early warning.
  • The new gc_a2a_task_ack tool acknowledges an expired task and clears its warning.
Webpermalink
ImprovementLowWebAction required: No

The top pricing tier is now a custom-priced Enterprise plan

The pricing page previously listed a fixed-price "Enterprise Dedicated" tier at $499/mo with specific capacity and uptime commitments. That tier is now presented as a custom Enterprise plan: pricing, quotas, retention, and support terms are scoped per contract through the sales contact form. No existing subscription changes -- the Free, Pro, Team, and Business tiers and their prices are unchanged. Separately, old per-model benchmark URLs now redirect permanently to the main benchmarks leaderboard, which carries the same data with fuller run detail.

Show details ▾
  • The Enterprise tier card now shows "Custom" pricing with a talk-to-sales contact flow instead of a fixed $499/mo price.
  • Capacity and uptime commitments for the Enterprise tier are now stated as negotiated per contract rather than as fixed published numbers.
  • Free, Pro, Team, and Business pricing and features are unchanged.
  • Old per-model benchmark pages permanently redirect to the benchmarks leaderboard.
Webpermalink
ImprovementLowWebAction required: No

Newsletter signup is now linked from the newsroom, and two more comparison pages are listed

The Friday Cost-of-Inference email digest has had a signup page for a while, but the newsroom about page still said email subscription was not offered and nothing linked to it. The about page now links the signup directly (alongside the Atom/RSS feed), and the signup page is in the sitemap. The comparison index also now lists our existing deep dives against Atlassian mcp-compressor and The Token Company, which were previously only reachable by direct URL.

Show details ▾
  • The newsroom about page links the weekly email digest signup and no longer claims email subscription is unavailable.
  • The comparison index cards now include mcp-compressor (Atlassian Labs) and The Token Company, each with a link to its full side-by-side page.
  • The digest signup page is included in the sitemap so it is discoverable from search.
MCP Gatewaypermalink
Bug fixMediumMCP GatewayAction required: No

gc_session_summary now returns a real compressed summary

The gc_session_summary tool -- the one you call before /clear to get a portable summary you can re-inject afterward -- was returning a fallback that echoed your conversation back at close to full size instead of compressing it. It now produces a genuine aggressive summary (roughly 5% of the original), with any keep_facts you pass preserved verbatim on top. Verified working on production.

Show details ▾
  • Calls previously came back flagged degraded with almost no size reduction; they now compress to an aggressive summary sized for /clear-and-restore.
  • keep_facts (file paths, decisions, blockers, identifiers) are still preserved verbatim and prepended to the summary.
  • Available on every plan, as before; volume is governed by your monthly compression quota.
Webpermalink
FeatureLowWebAPIAction required: No

Search the community feed, and sort by what is rising now

The dashboard Feed now has a search box: type a word or phrase and the list narrows to posts whose title or summary matches, across every sort and category filter. A new Rising sort is also live alongside Hot, New, and Top, surfacing whatever has gained the most votes in the last two days, so a fresh post that is taking off does not get buried by older high-scoring posts.

Show details ▾
  • A search field above the feed list filters by title and summary, with a clear message when a search has no matches.
  • The Rising tab is now active: it ranks posts from the last 48 hours by net score, for a "what is trending right now" view distinct from all-time Top.
  • Search composes with the existing category filter (News, Blog, Benchmark) and every sort mode.
Webpermalink
FeatureLowWebAction required: No

Landing page now shows the whole platform, not just compression

The homepage previously described only tool-response compression. It now shows the full set of tools your API key unlocks: shared cross-agent memory, task delegation between agents, plan review and merge, and code security scanning, alongside compression. A short workflow strip shows how those tools chain together in a single session, and the latest-content section at the bottom of the page now surfaces recent blog posts, news articles, and benchmark leaderboard entries side by side instead of blog posts alone.

Show details ▾
  • New platform overview section lists five tool families with their real plan requirement (free, Pro, or public), each linking to the docs or product page that covers it.
  • A short workflow strip names the tools that chain together end to end: ingest, compress, remember, delegate, and merge.
  • A new security section names the two security-scanning tools and what each one checks, with links to the security-scanning docs.
  • The latest-content section now shows recent news articles and benchmark leaderboard entries alongside recent blog posts.
Webpermalink
FeatureLowWebAction required: No

Compress became a Workbench: store, query, and hand off what you paste

The compression playground is now a Workbench with a tool rail beside it. Compress and Knowledge are fully live: compress something, then send it straight to Knowledge with one click to store it and search it back. Scan, Delegate, and Code context each show the exact call your own MCP client would run plus one clearly labeled example; running them directly in the browser is marked coming soon.

Show details ▾
  • A tool rail on the Compress page switches between five panels: Compress, Knowledge, Scan, Delegate, and Code context.
  • "Store in Knowledge" on a compress result saves it as a knowledge item in one click, with a query box underneath to search it back.
  • Scan, Delegate, and Code context generate the real MCP call for your own client plus one labeled example, honest about what runs in the browser today.
  • A session trail at the bottom shows exactly what you ran this session, with no placeholder steps.
Webpermalink
FeatureLowWebAction required: No

Review and merge agent plan proposals from your dashboard

When an agent proposes an edit to one of your plan documents, it now shows up in a review inbox on the Knowledge Agents page. You can read the exact change as a diff, see which agent wrote it and against which version, and merge or reject it in one click, without leaving the dashboard. Each plan also has a version-history timeline that shows every prior version, who authored it, and the proposal it came from, so you can trace the full authorship trail at a glance.

Show details ▾
  • A proposals inbox on the Knowledge Agents page lists every open change-proposal for the active project, with an open-count badge.
  • Expand any proposal to read its unified diff, then merge it into a new version or reject it; a stale-base proposal is flagged so you never overwrite newer work by mistake.
  • Every plan carries an attribution timeline: each version shows its author (a named agent or you) and the proposal that produced it.
1.59.0permalink
FeatureLowMCP GatewayAPIAction required: No

Agents can now propose edits to a shared plan, and you approve the merge

A planning document in your knowledge base is now a versioned file that AI agents collaborate on the way engineers collaborate on a pull request. An agent submits a change-proposal against a specific version of the plan; the proposal is signed so you know exactly which agent wrote it; and nothing lands until you, the human project owner, merge it. Each merge creates a new version snapshot with the contributing agent recorded against it, so you get a full attributed history of who changed what and when. On the Pro plan.

Show details ▾
  • Five new MCP tools to propose a change, list open proposals, read one proposal, merge or reject it as the owner, and view the per-version authorship trail (blame).
  • A proposal is a signed artifact bound to the exact base version it was written against; the merge is refused if the base has drifted, so an agent can never silently overwrite newer work.
  • Merges are atomic: the new version, the authorship record, the proposal status, and the audit trail all commit together or not at all.
  • A project-scoped key is confined to its own project across every surface (list, read, merge, propose, blame), and external agents propose through a signed, replay-protected A2A route.
APIpermalink
FeatureLowMCP GatewayAction required: No

Your agents can now hand tasks to each other through the MCP

On the Pro plan, one of your AI agents can now delegate a task to another of your agents, even when they run on different machines or CLIs. The assignee discovers the task the next time it wakes, does the work on its own codebase, and returns a result the requester can cryptographically verify came from that exact agent. Every task starts as a draft and only becomes visible to the assignee after you approve it, so nothing runs without your say so.

Show details ▾
  • Seven new MCP tools to create, approve, poll the inbox for, claim, complete, check the status of, and cancel a cross-agent task.
  • Results are signed by the agent that produced them and verifiable against that agent published verification key.
  • Every task is approval-gated by default, and tasks that go stale are swept and reopened automatically.
APIpermalink
Bug fixLowAPIAction required: No

Referral credit earned on the free plan now applies when you upgrade to Pro

If you referred people while on the free plan, the Pro-time you earned was recorded but never actually granted, because there was no active subscription to extend at the time. Now the moment you upgrade to Pro, every referral credit you earned is applied to your new subscription and your billing period is extended accordingly.

Show details ▾
  • Referral credits earned as a free user are redeemed automatically on your first Pro upgrade.
  • Each referral is applied and confirmed on its own, so a transient error on one credit never affects the others.
Webpermalink
FeatureLowWebAction required: No

Knowledge sources now show which agent last touched them

Each source in your Knowledge library now shows a "Last touched by" line when an agent has read, edited, or shared it over MCP, including the agent key and how long ago. Sources with no recent agent activity simply omit the line, so the list stays clean. This gives you an at-a-glance view of which agents are working with which knowledge.

Show details ▾
  • A "Last touched by {agent}" line with a relative timestamp appears under each source that recent MCP activity has touched.
  • The line is omitted for sources with no recent agent activity.
  • Hover the line to see the exact tool and full timestamp of the most recent touch.
APIpermalink
FeatureLowAPIAction required: No

Agent-to-agent sharing now signs manifests with a dedicated key, published at a JWKS endpoint

When your project shares a knowledge item with another agent, the share manifest is now signed with a dedicated Ed25519 key that is separate from the self-hosted license key. The public half is published at a standard JWKS endpoint referenced from the agent card, so a receiving agent can verify the manifest. Keeping the two keys separate means a compromise of one trust domain cannot forge the other.

Show details ▾
  • A2A share manifests are signed by a dedicated key, decoupled from license signing
  • The verification key is published at a JWKS endpoint linked from the agent card
  • The signing key and the published key can never disagree (both derive from the same private key)
Web v1.44.17permalink
ImprovementLowWebAction required: No

Knowledge Agents peer table shows active peers first and tucks revoked ones behind a toggle

The A2A Peers table on the Knowledge Agents tab now shows only your active peers by default. Revoked peers are collapsed behind a "Show N revoked peers" toggle, so the table stays focused on the peers that can actually transact.

Show details ▾
  • Active A2A peers show by default; revoked peers collapse behind a toggle
  • The toggle only appears when there is at least one revoked peer
Web v1.44.17permalink
FeatureLowWebAction required: No

Knowledge Agents tab rolls calls into tasks and pins requests that need you

The MCP activity feed on the Knowledge Agents tab now groups individual tool calls into collapsible task rows by the key that made them, so a busy agent reads as a few tasks instead of dozens of raw lines, and a rolled-up row surfaces its worst status so a failure is never hidden behind a later success. A new pinned panel shows inbound share requests from other agents that are waiting on your approve or deny decision, and only appears when something actually needs you.

Show details ▾
  • Tool calls group into collapsible task rows by the key that made them, worst status shown first
  • A pinned panel lists inbound share requests awaiting your approve or deny decision
  • The panel appears only when a request needs a human, and reports a fetch error instead of silently showing nothing
Web v1.44.17permalink
Bug fixLowWebAPIAction required: No

Knowledge Agents activity feed now shows which key made each call

The "Actor" column in the MCP activity feed on the Knowledge Agents tab previously showed a dash for every row. It now shows the API key that made each call, so you can see which key or agent is driving your MCP traffic.

Show details ▾
  • Each MCP activity row now attributes the call to the API key that made it
  • You can filter activity by key to isolate the traffic from one agent
  • Historical rows recorded before this fix stay unattributed (the key was never captured for them)
Web v1.44.17permalink
ImprovementLowWebAction required: No

Knowledge Agents tab now uses a clearer, consistent status vocabulary

The MCP activity feed on the Knowledge Agents tab now renders each call through one shared status chip with a consistent color system. A call that succeeded but ran slow keeps its "Completed" state and gains a distinct orange "slow" marker, and amber is now reserved only for states that need your attention, so no two states share a color.

Show details ▾
  • One shared status chip renders the full agent task lifecycle with a consistent color per state
  • A slow-but-successful call reads as "Completed" plus a distinct orange "slow" marker, not a flat green
  • Amber is reserved for states that need a human, so a color never means two different things
Web v1.44.17permalink
ImprovementLowWebAction required: No

Knowledge page now leads with your source library, not the add-source form

On the Knowledge dashboard, your source library is now the first thing on the page instead of sitting below the add-source form. When a project already has sources, you see them immediately; adding a new source moves just below. The add, query, and per-source action panels are all still there, one row down.

Show details ▾
  • The source library is promoted to the top of the workspace at every screen width
  • Add source, inline query, and the per-source actions rail move to the row below the library
  • No change to how you add, search, or manage sources. Only the layout order changed
API v1.58.7permalink
Bug fixMediumMCP GatewayAction required: No

gc_pre_flight and gc_session_summary now count the compression they return toward your quota

When gc_pre_flight or gc_session_summary returns a compressed body, that compression now counts toward your monthly compression quota, the same as ingest_context. Their budget advice (verdict, mode, recommendation) stays free and always works. Once you are over your monthly limit they still return the advice plus an upgrade note, but hold back the compressed body until you upgrade or the month resets.

Show details ▾
  • The advisor tools bill exactly one compression when they return a compressed body, matching the rest of the compression surface
  • Advice-only responses (no compressed body) and degraded fallbacks stay free
  • Over your monthly limit: you still get the budget advice and an upgrade note; the compressed body resumes when you upgrade or the month resets
API v1.58.7permalink
FeatureLowAPIMCP GatewayAction required: No

New gc_web_search tool: search the web and get only what you asked for

A new Pro MCP tool, gc_web_search(query, exa_api_key), searches the web with your own Exa API key, then fetches and compresses the top results into query-relevant skeletons (typically a few hundred tokens each instead of full 5k to 50k token pages). It runs the same evidence-aware retrieval as read_skeleton, so an agent gets a focused answer from live web results in one call. Drill into any hidden region with modulate_region.

Show details ▾
  • One call searches the web with your own Exa API key, then compresses the top results into focused, query-relevant summaries (Pro and above)
  • Each result returns a compressed skeleton plus token stats, so the compression counts toward your usage
  • Your Exa API key is used only to call Exa. It is never logged, stored, or returned in the response
API v1.58.7permalink
Bug fixLowMCP GatewayAction required: No

Workflow prompts now show the exact argument name each tool expects

Several built-in workflow prompts (compress-large-file, find-then-expand, review-pr-diff, debug-failing-test, team-memory, pre-flight) showed tool-call examples with the wrong argument name. The underlying tools actually require "text" (ingest_context, estimate_tokens, filter_cli_output), "query_text" (gc_kb_query), or "prompt" (gc_pre_flight), so an agent that copied the example verbatim got a validation error on the first call. The examples now use the correct argument names, so following a prompt step by step works on the first try.

Show details ▾
  • ingest_context / estimate_tokens / filter_cli_output examples now pass "text".
  • team-memory recall example now passes "query_text" to gc_kb_query.
  • pre-flight example now passes "prompt" (and the real "current_context_used_pct" option) to gc_pre_flight.
  • Regression-locked so all 10 prompt examples match live tool schemas.
API v1.58.7permalink
ImprovementInformationalMCP GatewayAction required: No

gc_pre_flight now points you at the best-fit workflow prompt to run next

The gc_pre_flight "call-first" tool already returns a mode (scout, compress, read, write, idle) telling your agent what to do next. Its response now also carries a suggested_workflow field naming the single best-fit built-in MCP prompt for that mode: scouting a codebase points at find-then-expand, reading or compressing a large doc points at compress-large-file. So an agent can go straight from the pre-flight verdict to the exact workflow (prompts/get) instead of guessing which of the built-in prompts fits. The field is null when no single prompt cleanly applies.

Show details ▾
  • suggested_workflow is {prompt, reason} or null, alongside the existing mode field.
  • Every suggested prompt name resolves at prompts/get (parity-locked in tests).
API v1.58.7permalink
FeatureInformationalMCP GatewayAction required: No

New scan-before-trust workflow prompt: check a skill, MCP server, or code before you trust it

A new built-in MCP prompt, scan-before-trust, gives your agent a one-call security gate before it installs a third-party skill, connects an MCP server, or merges outside code. Tell it the artifact type (skill, manifest, or code) and it routes to the right scanner: gc_skill_scan for a SKILL.md or tools/list manifest (returns a safe_to_install verdict plus tool-poisoning, prompt-injection, least-privilege, and excessive-agency findings) or gc_scan for a code bundle (AST rule-pack findings by rule, severity, file, and line). It also spells out the stop rule: anything other than a clean pass gets a human review. Available on Pro and above.

Show details ▾
  • Trigger it from any MCP client that supports prompts (prompts/list then prompts/get).
  • Arguments: artifact_type (skill, manifest, or code) and an optional content field.
  • The skill/manifest install-gate checks for AI-native threats a generic code scanner does not.
Web v1.44.17permalink
ImprovementLowWebAction required: No

The response-cache similarity threshold is now labeled as a roadmap setting

The per-account "similarity threshold" control in Billing, and its docs, previously read as if the cache already matched near-duplicate requests by embedding similarity. Today the response cache serves exact-repeat requests only; embedding-similarity matching is still on the roadmap. Both surfaces now say so plainly, and note that your threshold preference is saved for when similarity matching ships. No behavior changed.

Show details ▾
  • The threshold slider and the account-billing docs now state that similarity matching is on the roadmap.
  • Your saved preference is preserved and will apply once similarity matching is live.
API v1.58.7permalink
FeatureInformationalMCP GatewayAction required: No

New team-memory workflow prompt: store project context once, recall it from any agent

A new built-in MCP prompt, team-memory, gives your agents one shared, durable project memory. One agent stores context (a decision, a doc, a code slice) into the Knowledge Hub; a different agent, in a different session, retrieves it later and drills straight into the original source instead of a lossy summary. The prompt renders both halves of the loop, so either side can trigger it. It chains tools you already have (gc_pre_flight, ingest_context, read_skeleton, gc_kb_ingest to store; gc_kb_query, gc_kb_get, modulate_region to recall). Available on Pro and above with a project-bound key.

Show details ▾
  • Trigger it from any MCP client that supports prompts (prompts/list then prompts/get).
  • Arguments: content_or_file (what to remember), project_hint (the topic), and an optional recall_query to render the retrieval half for the question you are asking.
  • Recall returns the original stored text, and you can expand any region of a large stored item with modulate_region.
API v1.58.7permalink
Bug fixLowMCP GatewayAction required: No

The understand-codebase workflow prompt now uses tools available on the hosted server

The built-in understand-codebase MCP prompt previously told your agent to call compress_codebase, a filesystem tool that is not available on the hosted gateway (the server cannot read your local disk). Following the prompt led nowhere. It now guides the agent through ingest_context and read_skeleton — which work on every plan — then search_semantic to find a concept, so the workflow completes end to end.

Show details ▾
  • understand-codebase now uses ingest_context + read_skeleton instead of the unavailable compress_codebase.
  • Provide code inline via text or a public URL via file_url; the hosted server does not read local paths.
  • No change to how you trigger the prompt.
API v1.58.7permalink
Bug fixLowMCP GatewayAPIAction required: No

Compressed code no longer lists None/True/False as key entities

When you paste source code into the compressor, the "key entities" line for each section no longer picks up the Python literals None, True, and False as if they were meaningful names. Real class and function names such as TokenBucket are still surfaced. This is a small readability improvement to the skeleton view; nothing about how you call compression changes.

Show details ▾
  • None, True, and False are filtered out of the extracted key-entities list.
  • Genuine identifiers like class names are unaffected.
  • No change to the compression output or how you call it.
API v1.58.7permalink
Bug fixLowMCP GatewayAPIAction required: No

Compressed summaries no longer show stray markdown emphasis markers

When you compress a document that uses markdown bold or italic emphasis, the summary lines in the skeleton now read as clean prose. Previously a phrase like "a **token-bucket** rate limiter" could carry its asterisks straight into the summary. Bold and italic markers are stripped while snake_case identifiers such as gc_kb_query are left intact.

Show details ▾
  • Paired ** bold and * italic markers are removed from generated summaries and kept anchor text.
  • Underscores are left alone, so identifiers like gc_kb_query survive unchanged.
  • No change to how you call compression — existing skeletons just read cleaner.
API v1.58.7permalink
FeatureMediumMCP GatewayAction required: No

Set Knowledge Hub item visibility and share items across projects from your agent

Two new Pro tools let an agent govern Knowledge Hub items directly over MCP. gc_kb_set_visibility changes an item between private, project, and organization visibility, and gc_kb_share grants another project read access to an item. Both honor the calling key's item allowlist, so a key restricted to specific items cannot change or share anything outside that list, and a rejected request returns a clear error instead of a response that looks like it succeeded.

Show details ▾
  • gc_kb_set_visibility and gc_kb_share are available on Pro and above.
  • A key restricted to an item allowlist can only act on items in that list; anything else returns a not-found error.
  • Rejected governance requests return a proper error result, never a response that reads as success.
API v1.58.7permalink
Bug fixMediumMCP GatewayAPIAction required: No

Code compression now keeps the full body of JavaScript and TypeScript functions

When compressing JavaScript or TypeScript, a function that contained a nested block (an if or for block, an object literal, or a nested function) could have everything after its first inner closing brace dropped from the compressed result. The tail of the function was silently missing. Compression now reads the whole function body correctly, so nested blocks, object literals, and regular expressions are preserved. Python and other languages were unaffected.

Show details ▾
  • Affected only JavaScript and TypeScript source passed to code compression; a function with any nested `{ ... }` block lost its trailing lines.
  • The chunker now tracks strings, comments, and regular-expression literals so it finds the true end of each function.
  • No action needed. Recompress any JS/TS you previously ingested to get the complete function bodies.
API v1.58.7permalink
ImprovementLowMCP GatewayAction required: No

gc_skill_scan flags findings that sit inside a code example

When gc_skill_scan reviews a SKILL.md or MCP manifest, a finding that matches inside a fenced code block (for example, a security skill that teaches how to recognize prompt injection by showing the attack string) is now tagged context:in_code_fence, so a reviewer can tell an educational example from a hidden payload. The verdict is unchanged on purpose: for a skill file the documentation is still read and executed by an agent, so a fenced match is annotated, never suppressed.

Show details ▾
  • Findings inside a code fence carry a context:in_code_fence tag
  • The safe_to_install verdict is never lowered by the tag (no bypass)
  • A live payload placed outside a fence is unaffected
API v1.58.7permalink
Bug fixLowWebAction required: No

Business plan billing card now shows the correct price

The dashboard billing card for the Business plan displayed $499/mo, but the plan is billed at $199/mo (which is what Polar actually charges). This was a display-only mismatch, not an incorrect charge, and the order history always showed the real amount. The card now reads $199, matching the pricing page and the actual charge.

Show details ▾
  • Business plan billing card corrected from $499 to $199
  • Display-only fix; no charge was affected and order history was always accurate
  • Verified against the live Polar product price
API v1.58.7permalink
FeatureLowMCP GatewayClaude Code PluginAction required: No

Convert local files (PDF, DOCX, PPTX) into your Knowledge Hub

The gotcontext plugin now bundles a local file-to-Markdown converter, and a new "kb-ingest-file" MCP prompt walks you through turning a local document into a Knowledge Hub item. Point it at a PDF, Word doc, PowerPoint, or spreadsheet on your machine: the converter runs locally (your file is never uploaded to our servers), produces Markdown, and the prompt then stores that Markdown in your Knowledge Hub with gc_kb_ingest so it becomes searchable. The converter needs "uv" installed (or pip install markitdown-mcp); the workflow also accepts http/https/data URIs for remote documents.

Show details ▾
  • New "kb-ingest-file" MCP prompt scripts convert-to-Markdown then gc_kb_ingest
  • File conversion runs locally on your machine, so no document is parsed on our servers
  • Supports PDF, DOCX, PPTX, XLSX, HTML and more, plus remote http/https/data URIs
API v1.58.7permalink
Bug fixLowMCP GatewayAction required: No

MCP tool-call failures now report errors correctly to clients

When an MCP tool call fails (an unknown or unrecognized tool name, or an internal error while running a tool), the gateway now flags it as an error result on the wire, the same way it already did for our platform tools. Previously a small subset of failure paths returned the failure text without the error flag set, so an agent client that keys strictly on the error flag could read a failed call as a successful answer. Successful tool calls are unchanged and no action is needed.

Show details ▾
  • An unknown or unrecognized tool name now returns a flagged error result, not a silent success
  • An internal error inside a tool is now flagged as an error so clients handle it correctly
  • Successful tool calls are unaffected; no action needed
API v1.58.7permalink
ImprovementLowAPIMCP GatewayAction required: No

CSV files now compress row by row

When you ingest a CSV table, the compressor now splits it on row boundaries (the header becomes its own labeled node and the data rows are grouped into size-bounded nodes) so rows stay individually readable and searchable instead of collapsing into one summarized block. This completes the record-aware handling we shipped for JSON arrays and JSONL. A CSV with a quoted field that spans multiple lines is handled conservatively and left on the normal path. Plain prose and markdown are unchanged.

Show details ▾
  • A detected CSV is chunked per row, so rows survive as retrievable content
  • The header is kept once as its own node to label the columns for the whole table
  • No action needed; prose and non-CSV content are unchanged
API v1.58.7permalink
FeatureLowAPIMCP GatewayAction required: No

New gc_web_lookup tool: fetch a web page and get only what you asked for

A new Pro MCP tool, gc_web_lookup(url, query), fetches a web page you name, compresses it, and returns just the query-relevant part as a compact skeleton (typically a few hundred tokens instead of the full 5k to 50k token page). It runs the same evidence-aware retrieval as read_skeleton, so an agent gets a specific answer from a known URL in one call. Drill into any hidden region with modulate_region.

Show details ▾
  • One call fetches, compresses, and query-filters a web page (Pro and above)
  • Returns a compressed skeleton plus token stats, so the compression counts toward your usage
  • The URL fetch uses the same SSRF-safe path as ingest_context
API v1.58.7permalink
ImprovementLowAPIMCP GatewayAction required: No

JSONL logs and datasets now compress per line

When you ingest a JSONL document (one JSON object per line, the common shape for logs and dataset exports), the compressor now splits it on line boundaries so each record stays individually readable and searchable, instead of collapsing the whole file into one summarized block. This extends the same record-aware handling we shipped for JSON arrays. Plain prose and markdown behave exactly as before.

Show details ▾
  • A detected JSONL document is chunked per line, so each record survives as a retrievable node
  • Verified live: a 32-record JSONL file that previously compressed to a single node now keeps every record queryable
  • No action needed; prose, CSV, and non-JSON content are unchanged
API v1.58.7permalink
ImprovementLowAPIMCP GatewayAction required: No

Compressing a JSON array now keeps every record

When you ingest a JSON array or a records-style dataset, the compressor now splits it on record boundaries so each record stays individually readable and searchable, instead of collapsing the whole array into one summarized block. Structured data keeps its detail while still compressing about 5x. Plain prose and markdown behave exactly as before.

Show details ▾
  • A detected JSON array is chunked per record, so records survive as retrievable nodes
  • Verified live: a 100-record array now yields 19 record nodes (was 1) at about 82% savings
  • No action needed; prose and non-JSON content are unchanged
API v1.58.7permalink
ImprovementLowAPIWebAction required: No

GPT-5.6 (Sol, Terra, Luna) added to the model pricing catalog

The savings calculator and the /v1/models catalog now include OpenAI GPT-5.6 Sol, Terra, and Luna at their published rates, so cost and savings estimates for those models are accurate. Pick any of them as your default model or in the calculator.

Show details ▾
  • gpt-5.6-sol, gpt-5.6-terra, and gpt-5.6-luna added with verified per-token pricing
  • The unversioned gpt-5.6 alias resolves to Sol, matching OpenAI
  • No action needed; the models appear automatically in the calculator and model dropdown
API v1.58.7permalink
ImprovementLowAPIMCP GatewayAction required: No

Compression retrieval now handles numeric and identifier queries

When you query compressed content for a bare number, a code identifier, or a quoted phrase, the engine now blends keyword matching with semantic similarity so those exact-token lookups land on the right section. Natural-language and paraphrase queries are unchanged. Numeric lookups that previously missed now resolve correctly.

Show details ▾
  • Lexical-shape queries (numbers, identifiers, quoted phrases) now use a keyword-plus-semantic fusion ranker
  • Natural-language and paraphrase queries keep the existing semantic ranker unchanged
  • No action needed; the improvement is automatic
Web v1.44.17permalink
Bug fixLowWebAction required: No

Benchmark lenses with no data now show an honest empty state

On the community benchmarks leaderboard, the Tokens/sec/$ and Tokens/sec/W lenses had no submissions carrying cost or power data, so selecting one rendered a placeholder table of dashes in a meaningless order. Those lenses now show a clear "no submissions include this metric yet" message with a submit link, instead of a table that looked broken.

Show details ▾
  • A lens whose every row has a null value now renders an honest empty state, not a dash-filled table
  • The default Tokens/sec lens is unaffected because it is always populated
  • Added a submit call to action so a visitor can be the first to contribute that metric
API v1.58.7permalink
FeatureLowMCP GatewayAction required: No

gc_skill_scan weighs findings in executable scripts more heavily

When a skill bundle ships an executable helper (a .sh, .py, or .ps1 file, or any file that starts with a shebang), gc_skill_scan now weighs findings in that file more heavily than the same text in a markdown doc, because an install script that actually runs is a live vector. This only ever raises a bundle's risk score, so it can move a borderline result to a stronger warning but never softens one.

Show details ▾
  • Executable files are detected by interpreter extension or a leading shebang
  • A finding in an executable file counts for more toward the risk score
  • Escalate-only: the adjustment can raise a verdict but never lower it
API v1.58.7permalink
FeatureLowMCP GatewayAction required: No

gc_skill_scan flags agent-snooping skills

gc_skill_scan adds an "Agent Snooping" check. It flags a skill whose text says it will read the agent's own config or system prompt, read the MCP server config (.claude/mcp.json), or enumerate other installed skills. This catches a skill that reconnoiters your setup beyond its stated job, and is tuned to skip benign project-config reads.

Show details ▾
  • AS1: reads the agent's own config, instructions, or system prompt
  • AS2: reads MCP server config (.claude/mcp.json, server list)
  • AS3: enumerates or reads other installed skills
API v1.58.7permalink
FeatureLowMCP GatewayAction required: No

gc_skill_scan now flags MCP "rug pull" risks

The gc_skill_scan install-gate adds two "MCP Rug Pull" checks. RP2 flags a skill that declares an unpinned version (*, latest, or a range like ^1.0.0). RP3 flags language that defers a permission escalation to after install. Both help catch a skill or tool that looks safe at review but can change behavior once installed.

Show details ▾
  • RP2: an unpinned version in the skill frontmatter (an exact version stays clean)
  • RP3: "later it will request broader permissions" style pre-staging language
  • Both are advisory MEDIUM findings under a new "MCP Rug Pull" category
Web v1.44.17permalink
FeatureInformationalWebAction required: No

New Security Scanning product page

A new page at /products/security-audit explains gotcontext.ai's AI-native security scanning. gc_scan runs AST security rule packs over your code, and gc_skill_scan gates a SKILL.md or MCP tool manifest before you install it. Both run over the MCP gateway on the Pro plan.

Show details ▾
  • gc_scan checks code for auth, crypto, deserialization, secrets, subprocess, and TLS issues across Python, JavaScript, TypeScript, and Rust
  • gc_skill_scan is an install-gate for tool-poisoning, prompt-injection, least-privilege, and excessive-agency, returning a safe_to_install verdict
  • Linked from the Product menu, the products index, search, and the sitemap
API v1.58.7permalink
ImprovementLowMCP GatewayAction required: No

gc_scan returns only real matches, not the whole rule inventory

A gc_scan security scan now returns only the rules that actually matched your code. Previously it echoed one entry per rule in the pack, including every rule that found nothing, so a clean file looked like it surfaced a long list of issues. Findings now line up with the matched-rules count, so an agent reads only actionable hits.

Show details ▾
  • A clean scan now returns an empty findings list instead of the full cleared-rule checklist.
  • The matched-rules and total-matches counts are unchanged.
API v1.58.7permalink
FeatureLowMCP GatewayAction required: No

Scan code and skills for security issues over MCP

Two new Pro tools on the MCP gateway. gc_scan runs built-in AST security rule packs (subprocess, auth, crypto, deserialization, TLS, secrets) over a bundle of files and returns findings by rule, severity, and file. gc_skill_scan inspects a SKILL.md or an MCP tool-manifest for AI-native threats (tool-poisoning, prompt-injection, excessive-agency) and returns a safe_to_install verdict, so you can vet a skill or MCP server before your agent trusts it. Both live under the ?profile=full endpoint and are documented at /docs/security-scanning.

Show details ▾
  • gc_scan: point your agent at code, choose a ruleset, and get security findings with the rule, severity, and file for each hit.
  • gc_skill_scan: scan a skill or MCP server before you install it and gate on the safe_to_install verdict.
  • Full usage, schemas, and example responses are at /docs/security-scanning.
API v1.58.7permalink
ImprovementLowAPIMCP GatewayAction required: No

Faster compression when preserving a cache-aligned prefix

Requests that preserve a static prompt prefix (so your downstream provider can hit its native prompt cache) now do the compression work once instead of twice. That means lower latency and lower compute cost on that path. The compressed output and token counts are identical to before.

Show details ▾
  • The cache-aware compression path no longer recompresses the dynamic tail a second time just to report token counts.
  • Lower latency and server cost on preserve-prefix requests; byte-for-byte identical output and billing.
API v1.58.7permalink
FeatureInformationalAPIWebAction required: No

Get notified when an agent requests access to your context

When another agent requests access to one of your shared items, the owner now receives an email and an in-app notification, instead of the request sitting unseen. This is the first step of the agent-to-agent sharing flow: request, human approval, then access.

Show details ▾
  • Inbound agent access requests now email the project owner on file.
  • The request also appears in your in-app notifications bell.
  • Approve or deny remains a human decision, in your dashboard.
API v1.58.7permalink
ImprovementMediumAPIMCP GatewayAction required: No

Clearer, higher-ratio compression skeletons

A focused quality pass on the compression engine. Skeletons now render sections in original document order (they were previously reordered by importance, which made a compressed document harder to follow), extract cleaner key entities and summaries, and reach a higher compression ceiling. Reading a compressed document is now more faithful to the source.

Show details ▾
  • Compressed output renders in document order across text, code, and multi-level skeletons.
  • Key-entity and summary extraction strip filler for cleaner, more useful results.
  • A new skeleton format raises the achievable compression ratio on larger documents.
  • Compression estimates are more honest about very small inputs, where compression is not worthwhile.
API v1.58.7permalink
ImprovementMediumAPIAction required: No

Outbound webhooks now survive server restarts

Outbound webhook deliveries are now recorded durably and retried by a background process, so a delivery can no longer be lost if a server instance restarts mid-send. Your endpoints receive events more reliably.

Show details ▾
  • Every outbound webhook delivery is persisted and retried until it succeeds.
  • A scheduled background job completes any delivery interrupted by a restart.
API v1.58.7permalink
Bug fixHighAPIWebAction required: No

More reliable subscription and plan updates

Fixed edge cases where a plan change could fail to apply after a transient error, and added a periodic reconciliation that re-syncs your plan from the billing provider as a backstop. Plan and subscription changes now apply reliably and propagate to all of your API keys immediately.

Show details ▾
  • Plan grants apply atomically, even if a transient error occurs mid-update.
  • A periodic reconciliation re-syncs your plan from the billing provider so no change is missed.
  • Plan updates now propagate to every one of your API keys right away.
Web v1.44.17permalink
FeatureInformationalWebAction required: No

Report a bug or send feedback without signing in

A feedback widget is now available to every visitor, no account required. If something is broken or missing, you can tell us directly from the site.

Show details ▾
  • Logged-out visitors can submit a bug report or feedback from the site.
  • Spam-protected and rate-limited.
Web v1.44.17permalink
FeatureInformationalWebAction required: No

New comparison pages: LLMLingua and Context7

Two new side-by-side comparison pages explain how gotcontext differs from LLMLingua and Context7 on the differences that matter: reversible compression you can expand back, cross-agent memory, and MCP-native delivery. Real capabilities, no invented numbers.

Show details ▾
  • New comparison pages at /compare/llmlingua and /compare/context7.
  • Honest, real-numbers feature comparisons.
gotcontext v1.0.1permalink
FeatureInformationalMCP GatewayWebAction required: No

One-command MCP setup with the gotcontext CLI

Running `npx gotcontext wrap claude` (or `codex` / `gemini`) wires the gotcontext MCP server into your CLI's config file automatically. No manual JSON editing required. `npx gotcontext doctor` shows which CLIs are detected and whether each one is configured.

Show details ▾
  • `npx gotcontext wrap claude` configures the MCP server in Claude Code's config in one step. Also works with `codex` and `gemini`.
  • `npx gotcontext doctor` detects which CLIs are installed and shows their configuration status.
  • No JSON editing or manual path configuration needed.
  • Available now on npm as `gotcontext`.
API v1.58.7permalink
FeatureInformationalAPIMCP GatewayAction required: No

Token budget for Knowledge Base queries

Knowledge Base queries now accept an optional token budget. Results are trimmed to fit the budget you set, so retrieved context stays within a target size. At least one result is always returned, even when the budget is very small.

Show details ▾
  • Pass a `token_budget` parameter to a Knowledge Base query to cap the total size of retrieved results.
  • Results are ranked by relevance and trimmed to fit the budget; the highest-ranked result is always included.
  • Useful when building agents that need to stay within a fixed context window.
Web v1.44.14permalink
Bug fixLowWebAction required: No

News link added to the homepage footer

The homepage footer now links to AI News alongside the other resource links, making the live News section easier to find.

Show details ▾
  • Added AI News to the homepage footer resources list.
  • Improves navigation for readers who discover gotcontext from the homepage.
Web v1.44.13permalink
FeatureInformationalWebAction required: No

AI News articles now include related links

News article pages now show related recent stories from the same category, helping readers continue through the AI News archive.

Show details ▾
  • Article pages can show up to four related stories from the same category.
  • The related links are omitted when no relevant stories are available.
  • This improves discovery for readers and crawlers without adding origin load for every article view.
Web v1.44.17permalink
ImprovementInformationalWebAction required: No

tensor-grep is now open source

The AST code-intelligence engine behind the code-context tools (gc_blast_radius and gc_callers) is now available as open source under the Apache-2.0 license at github.com/oimiragieo/tensor-grep.

Show details ▾
  • tensor-grep, which powers gc_blast_radius and gc_callers, is now open source on GitHub under Apache-2.0.
  • The repository is at github.com/oimiragieo/tensor-grep.
API v1.58.6permalink
ImprovementMediumAPIWebAction required: No

AI News reads are now edge-cacheable

Public AI News pages can now be cached at the edge, reducing origin load during crawl spikes and keeping the News section more reliable.

Show details ▾
  • News list, article, and category reads now return cache headers suitable for public edge caching.
  • The cache policy keeps recently published content fresh while reducing repeated origin requests.
  • Hosted customers and public readers receive the improvement automatically.
API v1.58.5permalink
ImprovementLowAPIMCP GatewayAction required: No

Deterministic compression output

Compressing the same input now returns byte-identical output across repeated runs. This makes downstream prompt caching more effective, since cached prompts built from compressed context will now hit the cache consistently.

Show details ▾
  • The same input now produces the same compressed output on every run.
  • Prompt cache hit rates improve when compressed context is reused across requests.
API v1.58.4permalink
ImprovementLowMCP GatewayAction required: No

MCP tools now advertise safer read and delete behavior

MCP clients can better distinguish read-only tools from tools that can delete or revoke data, improving client-side safety prompts and parallel execution.

Show details ▾
  • Read-only platform tools now advertise that they are safe to run in parallel.
  • Destructive tools now advertise that they need extra client-side care before use.
  • Tool titles are clearer in MCP clients.
API v1.58.3permalink
ImprovementLowMCP GatewayAction required: No

MCP entry tools are easier for clients to discover

The main setup and lookup tools now advertise clearer metadata, so MCP clients can present and run them more effectively.

Show details ▾
  • Core entry tools now include clearer titles and read-only metadata.
  • Clients can identify safe read-only calls more easily.
  • The gateway continues to expose the same tool behavior and request shapes.
API v1.58.2permalink
FeatureInformationalWebAction required: No

AI News Center now covers arXiv research

The News section now includes concise summaries of recent AI research papers from arXiv, refreshed weekly alongside the existing industry-news coverage. Each summary links to the original paper, and every entry is reviewed before it publishes.

Show details ▾
  • Weekly summaries of recent AI research papers from arXiv, in the News feed.
  • Each entry links to the source paper on arXiv.
  • Reviewed before publishing.
API v1.58.1permalink
ImprovementMediumAPIWebAction required: No

Research-news drafting moved to a slower dedicated lane

Long-running research-news drafting now runs separately from faster industry-news drafting, improving reliability for both content pipelines.

Show details ▾
  • Research-paper drafting now processes in smaller batches on its own cadence.
  • Faster news sources are no longer blocked behind long-running research work.
  • Stuck research drafts can be recovered automatically.
API v1.58.0permalink
FeatureInformationalAPIWebAction required: No

Automated research coverage for AI News

AI News can now draft research coverage from arXiv metadata, with review required before publication.

Show details ▾
  • A weekly research source brings recent AI papers into the News drafting queue.
  • Research stories remain review-only before publication.
  • Longer source material can be reduced before drafting when it is large enough to benefit.
Web v1.44.0permalink
FeatureInformationalWebAction required: No

Live compression demo on the homepage, plus nav and docs improvements

A no-signup "Try it" compression demo is now on the homepage: paste context, watch the token count drop, and copy a ready-made API call. The curl quickstart in the API docs no longer gets cut off. News is now in the Resources nav for easier discovery. The self-hosted install docs reference the correct PyPI package.

Show details ▾
  • Live compression demo on the homepage: paste text, see token savings, copy a working curl call. No account required.
  • The API quickstart curl command now renders in full instead of being truncated.
  • News is now in the Resources nav item (was footer-only).
  • Self-hosted install docs now reference the correct PyPI package name (gotcontext-server).
API v1.52.14permalink
Bug fixMediumAPIAction required: No

Polar subscription audit rows are now durable across server restarts

Subscription-lifecycle audit records (subscription created, updated, canceled) could be silently dropped if the server suspended between processing the webhook and writing the record. The records are now written before the webhook response is returned.

Show details ▾
  • Subscription audit rows for created, updated, and canceled events are now written durably before the 200 response is sent to Polar.
  • Best-effort side effects such as cancellation feedback emails continue to run in the background as before.
API v1.52.13permalink
Bug fixLowAPIAction required: No

GET /health/readiness: model_loaded now reflects actual model state

The readiness endpoint reported model_loaded: true immediately after server startup, before the embedding model had finished loading. This could cause a load balancer to route traffic to a machine that would then take up to 25 seconds to respond to the first compression request.

Show details ▾
  • GET /health/readiness now returns model_loaded: false until the ONNX embedding model has fully initialized.
  • The false-positive window has been closed: model_loaded accurately reflects whether the server can immediately handle a compression request.
API v1.52.12permalink
Bug fixHighAPIMCP GatewayAction required: No

MCP usage metering: read and estimate tools no longer count as compressions

The MCP gateway was double-counting usage: read_skeleton counted a compression each time it was called on an already-ingested document, and estimate_tokens incremented the compressions counter even though it performs no compression. This inflated the compressions_used figure in the dashboard and would have caused double-billing on Polar overage once billing is active. The fix is live and hosted customers are auto-upgraded.

Show details ▾
  • read_skeleton, estimate_tokens, and other read/advisory tools no longer increment compressions_used or tokens_saved.
  • Only tools that compress new input content (ingest_context, filter_cli_output, compress_codebase, and related) count toward your compression quota.
  • Dashboard totals and the global savings counter reflect the corrected counts going forward.
API v1.52.11permalink
Bug fixMediumAPIWebAction required: No

Homepage demo no longer stalls on the first request after a server restart

After a server restart (deploy, OOM recovery, host migration), the first compression request could take up to 25 seconds because the embedding model loaded lazily on demand. The homepage live demo was particularly exposed since it is often the first compression call a new visitor triggers.

Show details ▾
  • The server now runs a real compression during boot to force the embedding model to load before traffic arrives.
  • The homepage demo shows a "warming up" state on cold starts instead of timing out.
  • Subsequent requests on a warmed server are unaffected.
API v1.52.10permalink
Bug fixMediumAPIAction required: No

Self-hosted: server no longer fails to boot on FastAPI 0.115 to 0.135

Fresh installations that resolved FastAPI to versions 0.115 through 0.135 failed to start with an assertion error. The hosted API was unaffected (Docker resolves 0.136.3), but self-hosted operators on those versions could not start the server. Fixed by adding explicit response model annotations to all 13 body-less routes.

Show details ▾
  • The server now starts correctly across the full FastAPI version range covered by the requirements pin (0.115+).
  • No behavior changes for hosted customers or self-hosted operators on FastAPI 0.136+.
API v1.52.9permalink
Bug fixLowAPIWebAction required: No

Knowledge Hub governance chip now shows; health endpoints no longer hang

Two fixes: the governance status chip (draft / in review / approved) on Knowledge Hub items was always blank because the field was missing from the API response. Separately, the health endpoints could block indefinitely if a dependency was slow or unreachable.

Show details ▾
  • Knowledge Hub items now return item_status (governance state) in list and detail responses; the dashboard chip renders correctly.
  • GET /v1/infra/health and GET /health/diagnostics now return within 3 seconds even when a dependency is unreachable, reporting the affected check as down rather than hanging.
Web v1.43.7permalink
ImprovementInformationalWebAction required: No

Docs: guided quickstart, troubleshooting, glossary, and recipes

The docs previously started with a 46-section API reference and no "start here" page. Four new pages cover the full getting-started path.

Show details ▾
  • /docs/quickstart: prerequisites checklist and a step-by-step path from zero to first compression via MCP.
  • /docs/troubleshooting: symptom-to-fix for the common issues (missing tools, 401, negative ratio on small inputs, 421 Invalid Host, rate limits, self-hosted setup).
  • /docs/glossary: definitions for product-specific terms (fidelity, skeleton, blast radius, profile, KB, tool-result limit).
  • /docs/recipes: composed multi-tool workflows (compress a PR diff, reduce pytest output, ingest and query, batch ingest).
API v1.52.4 / API v1.52.5permalink
Bug fixMediumAPIMCP GatewayAction required: No

Compression engine accuracy fixes and reliability hardening

Four engine correctness bugs and several reliability gaps were fixed. search_semantic and read_skeleton were returning a misleading "sufficient evidence" signal even on irrelevant queries. Cross-query result corruption was possible in multi-document workspaces. Embedding failures now surface as errors instead of silently returning meaningless results. Separate reliability fixes ensure that operational errors reach alerting and that two admin list queries no longer issue per-row database calls.

Show details ▾
  • search_semantic and read_skeleton now correctly report "insufficient evidence" when the query does not match the document.
  • Re-ranking no longer mutates shared state, preventing cross-query result corruption when multiple requests run concurrently.
  • A document ID prefix collision that allowed results from one document to appear in another document's queries has been fixed.
  • Embedding failures now raise instead of returning silent fallback results.
  • BM25 prefix matching tightened: searching for "python" no longer matches "pythonic".
  • Two admin list queries (users, MCP client summary) collapsed from per-row to a single grouped query each.
API v1.52.2permalink
Bug fixLowMCP GatewayAction required: No

gc_lookup: Tailwind CSS false-positive fixed; reingest cron no longer re-stages completed frameworks

gc_lookup was misclassifying Tailwind CSS class strings as markup and refusing to embed them, causing the Tailwind CSS framework docs to return zero results. Separately, the gc_lookup reingest cron was re-staging already-complete frameworks every run.

Show details ▾
  • The markup-detection filter now requires multiple HTML/JSX-style tag structures before classifying a chunk as markup; single utility-class names no longer trigger the filter.
  • The reingest cron now skips frameworks that have already completed ingestion, preventing redundant re-staging on every hourly run.
API v1.52.1 / Web v1.43.1permalink
FeatureInformationalAPIWebAction required: No

One-tap "send test notification" to verify push is wired

After enabling web push, users can immediately verify their device receives notifications. A button in the notification settings calls POST /v1/push/test, which sends a real push event to every active subscription for the account.

Show details ▾
  • POST /v1/push/test delivers a real push message to all active subscriptions for the authenticated user.
  • Response includes the number of notifications sent and a status of "ok", "no_subscriptions", or "push_disabled".
  • Returns push_disabled when the server is not configured for push (self-hosted operators who skipped PWA setup).
API v1.52.0 / Web v1.43.0permalink
FeatureInformationalAPIWebAction required: No

Web push notifications: phone alerts for replies and follows

gotcontext.ai is now an installable PWA with opt-in push notifications. Users who add the app to their home screen can receive native push alerts when someone replies to their comment or follows their profile.

Show details ▾
  • POST /v1/push/subscribe registers a device for push notifications for the authenticated user.
  • DELETE /v1/push/subscribe removes a device subscription (idempotent).
  • GET /v1/push/vapid-public-key returns the server's push public key (public, no auth required).
  • A service worker handles push receipt and notification display in the background.
API v1.51.1permalink
FeatureInformationalMCP GatewayAction required: No

Session-aware result deduplication for gc_lookup and search_semantic

When an agent calls gc_lookup or search_semantic multiple times in a session, results that were already returned in an earlier call are now filtered out automatically. This prevents the same chunk from occupying agent context window space twice across consecutive tool calls.

Show details ▾
  • Each MCP session tracks which results have already been returned; subsequent calls to the same tool skip previously-seen chunks.
  • Pass dedup=false to disable per-call (useful when an agent intentionally re-reads a chunk).
  • If the session store is unavailable the tool returns results without dedup rather than failing.
API v1.51.0permalink
FeatureInformationalAPIMCP GatewayPython SDKAction required: No

compress_tool_output: compress CLI and MCP tool output before re-feeding it

A new Pro-tier MCP tool and REST endpoint that strips ANSI codes, collapses repeated blank lines, elides stack-trace padding, and removes identical-line runs from CLI or tool output. An identifier footer is appended so models can distinguish compressed output from original text.

Show details ▾
  • POST /v1/compress/tool-output accepts { output, tool_name? } and returns the standard CompressResponse shape.
  • Strips ANSI codes, collapses blank lines, elides stack-trace padding, and removes repeated identical lines.
  • An identifier footer is appended so models can distinguish compressed output from original text.
  • Python SDK 0.6.1 adds client.compress_tool_output(output, tool_name=None).
  • Pro plan required; Free plan returns 403.
API v1.50.31permalink
ImprovementInformationalAPIAction required: No

CompressResponse now includes a note field for inputs too small to benefit

POST /v1/compress now returns a non-null note string when the input is under ~200 tokens, the threshold where compression overhead exceeds the savings. Previously the API returned a negative savings_pct with no explanation.

Show details ▾
  • note is null for normal inputs (≥200 tokens).
  • For small inputs note reads "Input is too short for meaningful compression. Paste 200+ tokens for real savings."
  • savings_pct continues to be returned accurately (may be negative for small inputs); the note provides the human-readable context.
API v1.50.30permalink
InternalInformationalAPIAction required: No

Fixed order-dependent test flake in MCP tool catalog tests

An order-sensitive test was mutating the MCP tool catalog without restoring it, causing intermittent failures when tests ran in a different order. No behavior change in production.

Show details ▾
  • Test isolation for the MCP tool catalog is now enforced regardless of test execution order.
API v1.50.29permalink
FeatureInformationalAPIAction required: No

Resend bounce and spam-complaint webhooks auto-set email opt-out

Hard bounces and spam complaints received from Resend now automatically set users.email_opt_out = True for the affected address, preventing future sends and closing a CAN-SPAM compliance gap.

Show details ▾
  • Hard bounces and spam complaints from the email provider now automatically opt affected addresses out of future sends.
  • Soft bounces, delivery confirmations, opens, and clicks are logged and ignored.
  • Webhook signatures are verified before processing; a durable audit record is written for every opt-out change.
API v1.50.28permalink
FeatureInformationalAPIWebAction required: No

Follow users: social graph with follow/unfollow + in-app notifications

Users can now follow each other. Following a user triggers an in-app notification for the target. The dashboard shows follower and following counts on profile pages.

Show details ▾
  • Follow and unfollow are both idempotent. Repeating either action is a no-op.
  • GET /v1/users/{username}/follow-status returns whether you follow them plus their follower and following counts.
  • Attempting to follow yourself returns an error.
API v1.50.27permalink
FeatureInformationalAPIWebAction required: No

User activity timeline and in-app reply notifications

A new activity feed and notification store lets users track replies, follows, and system events. The dashboard shows an unread badge on the notifications bell.

Show details ▾
  • GET /v1/activity returns a merged chronological timeline of comments and notifications.
  • GET /v1/activity/notifications returns notifications only with an unread count.
  • Mark individual notifications or all notifications read via dedicated endpoints.
API v1.50.26permalink
FeatureInformationalAPIWebAction required: No

Content flagging and admin moderation queue

Users can flag comments, benchmark submissions, and news articles for review. Flagged content surfaces in a new /dashboard/admin/moderation queue for admins.

Show details ▾
  • POST /v1/content/report accepts { content_type, content_id, reason }.
  • Admin moderation queue shows all pending reports across content types with approve/dismiss actions.
  • Reporting your own content returns 400.
API v1.50.25permalink
FeatureInformationalAPIWebAction required: No

Benchmark comments and source attribution fields

Benchmark submissions now accept source_url and source_label fields for citing original research. Comment threads are now available on benchmark detail pages.

Show details ▾
  • Benchmark submissions now accept source_url and source_label fields for citing original research.
  • Comment threads are now available on benchmark detail pages.
  • Existing benchmark submissions without a source show no citation badge.
API v1.50.24permalink
FeatureInformationalAPIWebAction required: No

Pro plan badges and user avatar upload

Pro and above subscribers now display a Pro badge next to their username in comments and on profile pages. All users can upload a custom avatar (48 emoji options or image URL).

Show details ▾
  • PATCH /v1/account/avatar accepts an image URL or one of 48 supported emoji characters.
  • GET /v1/account/avatar returns the current avatar configuration.
  • Pro badge is displayed alongside the username based on the account's active plan.
API v1.50.21permalink
FeatureInformationalAPIWebAction required: No

Admin price-audit monitor: weekly drift detection for model pricing

A new admin endpoint and dashboard surface shows detected drift between gotcontext's internal model-pricing catalog and live provider pricing. A weekly GitHub Actions cron runs the audit automatically.

Show details ▾
  • GET /v1/admin/price-audit returns a list of models with detected pricing drift vs the latest published rates.
  • Dashboard shows drift alerts with the model name, current cataloged rate, and detected rate.
  • Audit runs weekly automatically; detected drift generates an alert rather than blocking deploys.
API v1.50.20permalink
Bug fixMediumAPIWebAction required: No

Knowledge Hub: phantom "Indexing did not complete" + manual reindex endpoint

Knowledge Hub items that failed mid-embedding could get stuck in an INGESTING state, displaying a permanent "Indexing did not complete" banner in the dashboard with no recovery path. A new reindex endpoint lets users manually re-trigger ingestion.

Show details ▾
  • POST /v1/projects/{id}/knowledge/items/{item_id}/reindex resets a stuck or failed item and queues it for re-embedding.
  • The background indexing job now also automatically clears items that have been stuck in the indexing state for over 30 minutes.
API v1.50.19permalink
FeatureInformationalAPIWebAction required: No

Forum moderation system: content reports, mod actions, user silencing

A full moderation layer for the community feed: users can report comments, admins can act on reports, and repeat offenders can be silenced.

Show details ▾
  • Users can submit reports on comments for admin review.
  • Admin endpoints support listing reports, resolving reports, viewing moderation history, and silencing or unsilencing users.
API v1.50.18permalink
FeatureInformationalAPIWebAction required: No

Rich comments: Markdown, hyperlinks, edit, and delete

Community feed comments now support Markdown formatting and hyperlinks. Comment authors can edit (with an "edited" timestamp) or delete their own comments.

Show details ▾
  • Comment authors can edit their comment; edited comments display an "edited" timestamp.
  • Comment authors can delete their comment; deleted comments are replaced with "[deleted]".
  • Markdown content is sanitized server-side.
API v1.50.17permalink
FeatureInformationalAPIWebAction required: No

Real usernames: choose a handle for community posts

Users can now set a unique username (handle) used in community feed comments and profile links. Existing users' display names remain their account full name until they set a handle.

Show details ▾
  • GET /v1/account/username returns the current username or null.
  • PATCH /v1/account/username accepts a username of 3 to 32 alphanumeric characters or underscores; returns 409 on conflict.
  • Comment responses now include the author's username for display alongside their display name.
API v1.50.14permalink
Bug fixLowAPIAction required: No

Polar metering errors now surface in error monitoring

Failures in the Polar metering path were logged at a low severity level, making them invisible in error monitoring. They are now reported at error severity so they appear in alerts automatically.

Show details ▾
  • Billing metering failures now surface in error monitoring within the normal alert window.
  • No behavior change for successful meter calls.
API v1.50.13permalink
Bug fixMediumAPIAction required: No

Billing writes: usage-tracking now completes before response is returned

Usage-tracking writes in the billing path were dispatched as fire-and-forget background tasks and could be lost before completing during server suspend. They are now completed inline before the response is returned.

Show details ▾
  • Usage-tracking writes are now guaranteed to complete before the response is returned.
  • No latency regression. The write path completes well within normal response time.
API v1.50.12permalink
FeatureInformationalAPIAction required: No

Automated weekly model-price audit

A new automated job runs weekly to detect drift between the internal model-pricing catalog and published provider rates. Detected drift generates an alert.

Show details ▾
  • The audit compares cataloged model rates against current provider pricing pages.
  • Runs weekly automatically.
  • Drift beyond 5% of any rate triggers an alert.
API v1.50.11permalink
Bug fixMediumAPIAction required: No

Model catalog: Gemini 3.1 Pro and Haiku 4.5 pricing corrected; gemini-3.5-flash added

Gemini 3.1 Pro was cataloged at $1.25/MTok input (should be $2.00). Haiku 4.5 input/output rates were swapped. gemini-3.5-flash was missing from the catalog entirely. All three affected the savings-estimate calculations on /v1/usage/by-model.

Show details ▾
  • Gemini 3.1 Pro: $1.25 → $2.00/MTok input.
  • Haiku 4.5: input $1.00/MTok, output $5.00/MTok (rates were swapped).
  • gemini-3.5-flash added to catalog at $0.075/$0.30 per MTok.
  • claude-opus-4.8 added to catalog at $5.00/$25.00 per MTok.
API v1.50.10permalink
Bug fixMediumAPIWebAction required: No

Opus pricing corrected from $15/$75 to $5/$25 across five surfaces

claude-opus-4 and claude-opus-4.5 had stale $15/$75 per MTok rates in the pricing catalog and across the web UI. Corrected to $5/$25. This lowered the displayed savings estimate for Opus-heavy workloads.

Show details ▾
  • claude-opus-4 and claude-opus-4.5 input rate: $15 → $5/MTok.
  • Output rate: $75 → $25/MTok.
  • Savings estimates for Opus workloads on /v1/usage/by-model and the savings calculator now reflect the correct rates.
API v1.50.9permalink
Bug fixMediumAPIAction required: No

Three latent database query bugs fixed; regression guard added

Three database queries were silently failing in production due to a SQL syntax incompatibility. The affected paths (Knowledge Hub retention sweep and usage governance) were not executing. A regression guard prevents this class of bug from being introduced again.

Show details ▾
  • All three affected queries have been corrected and are now executing as intended.
  • A regression guard catches this pattern before it reaches deployment.
API v1.50.8permalink
Bug fixLowMCP GatewayAction required: No

gc_lookup reingest cron: COMPLETE frameworks no longer re-staged on every run

The gc_lookup framework re-ingest job was re-queuing every framework on every hourly run regardless of whether ingestion had already finished.

Show details ▾
  • The reingest job now skips frameworks that have already completed ingestion.
  • Only frameworks that are pending, failed, or not yet ingested are re-queued.
  • Eliminates redundant background work once all frameworks are fully indexed.
API v1.50.7permalink
Bug fixMediumMCP GatewayAction required: No

gc_lookup Phase B drain: free-tier slot starvation and head-of-line blocking fixed

The gc_lookup tool was using a single shared embedding queue that allowed a burst of free-tier embedding jobs to starve Pro jobs. A large framework (e.g. React docs) at the head of the queue could block all subsequent jobs until it completed.

Show details ▾
  • Pro and Free embedding jobs now run in separate queues so a burst of free-tier jobs cannot delay Pro results.
  • Large framework documents are processed in chunks with interleaved scheduling, eliminating head-of-line blocking.
  • Free-tier throughput is now isolated from Pro-tier response times.
API v1.50.6permalink
Bug fixLowAPIWebAction required: No

Cache-hit savings now show up in your Cache-Adjusted Savings dashboard

Compression calls served from the semantic cache were not being recorded in the usage events behind the Cache-Adjusted Savings view, so cache ROI looked lower than it really was. They are now recorded with full cache attribution. Your billing and usage limits are unchanged. Cache hits already counted toward your quota.

Show details ▾
  • Cache hits now write a durable usage event (previously skipped, which left cache ROI under-reported).
  • Both hits and misses now carry their cache status and similarity score, so /v1/usage/by-cache is accurate.
  • Telemetry only: the real-time quota counter already counted cache hits, so nothing about billing or usage limits changed.
API v1.49.0permalink
FeatureInformationalAPIMCP GatewayAction required: No

gc_submit_benchmark: submit a benchmark run straight from your MCP client

A new free MCP tool lets coding agents and Claude Code sessions submit a compression benchmark result directly, without leaving the terminal.

Show details ▾
  • Accepts the six required benchmark fields (model, quantization, hardware, context length, batch size, tokens/sec output) plus eight optional fields.
  • Returns the public URL of the submitted run so it can be shared immediately.
  • Available on all plans at no cost. Submissions help build the community benchmark dataset.
API v1.49.1permalink
Bug fixLowAPIWebAction required: No

Fixed a 500 error on the Batch Queue dashboard page

The Batch Queue page returned a 500 for some accounts due to a Clerk user ID being passed where a UUID was expected. The page now loads correctly.

Show details ▾
  • The Batch Queue SSE stream now loads correctly for all accounts.
API v1.48.0 / Web v1.42.0permalink
FeatureInformationalAPIWebAction required: No

Benchmarks community: threaded Q&A, AI moderation, and a percentile ranking chip

Benchmark run pages now support threaded questions and answers, show where a result ranks among similar runs, and include AI-assisted moderation to keep discussions on-topic.

Show details ▾
  • Threaded Q&A comments appear on each benchmark run page; replies nest up to eight levels deep.
  • Comments go through AI-assisted classification (safe / spam / undisclosed promotion / fabricated result) before appearing publicly. Suspected fabricated results always go to human review.
  • A percentile chip shows where the run ranks among similar configurations, hidden when fewer than five comparable runs exist.
  • Authors see a "Pending review" badge on their own comments while moderation is in progress; others see nothing until a comment is approved.
  • Terms of service updated to prohibit undisclosed commercial promotion and fabricated benchmark results.
API v1.47.0permalink
ImprovementInformationalAPIMCP GatewayAction required: No

gc_lookup framework docs now refresh on a schedule

The gc_lookup free MCP tool now returns more complete and accurate answers for Tailwind CSS, LangChain, and SQLAlchemy, which previously had incomplete doc coverage.

Show details ▾
  • A new cron job advances doc ingestion for each framework one small batch per run, avoiding the timeout issues that previously left some frameworks partially indexed.
  • Once all sections are indexed the cron becomes a fast no-op until the next scheduled re-ingest.
  • No change to gc_lookup's interface. Existing queries benefit automatically.
API v1.46.0 / Web v1.41.8permalink
FeatureInformationalAPIWebAction required: No

Dashboard feed gains up/down votes and threaded comments

The /dashboard/feed page is redesigned as a community-style stream with voting, threaded comments, and a trending sidebar, unifying AI news, blog posts, and benchmark runs in one place.

Show details ▾
  • Each feed card has a vote rail for up/down votes with optimistic UI and rollback on error.
  • Threaded comments support replies up to three levels deep in the feed view; a dedicated in-page post view renders deeper threads.
  • Hot score is maintained by a database trigger using the Reddit hot-score formula.
  • A sidebar shows the top five trending posts by net score this week.
  • All three content types (news articles, blog posts, and benchmark runs) appear in one unified stream.
API v1.45.5 / Web v1.41.4permalink
ImprovementInformationalAPIWebAction required: No

Knowledge Hub dashboard redesigned with real per-source token metrics

The /dashboard/knowledge page shows a live metrics header (source count, total tokens indexed, average compression ratio) and per-source token counts, using the same token counter as /v1/compress.

Show details ▾
  • Token counts are captured using the product's canonical TokenEstimator at every ingest path so the numbers match what /v1/compress reports.
  • The metrics header shows "N sources · X tokens indexed · Y× compressed"; each clause is omitted when data is absent rather than showing a zero.
  • Existing knowledge items show counts the first time the backfill runs; all new ingests carry them immediately.
  • The sources list was converted from a dense table to card rows while preserving all existing actions: bulk select, rename, preview, MCP toggle, and project membership.
API v1.45.4permalink
FeatureInformationalAPIAction required: No

GitHub push events can trigger per-project compression jobs

Teams with a connected GitHub repository can now have push and pull-request events automatically dispatch a compression job for changed files, using the access token already in their integration settings.

Show details ▾
  • Webhook routing uses HMAC signature verification against each configured integration secret. The payload repository field is never trusted alone.
  • Push events compress changed files; pull-request events compress the PR body and post a compression stats comment on the PR.
  • Dispatched as a background task; a delivery failure does not affect the webhook acknowledgement.
API v1.45.1permalink
Bug fixLowAPIWebAction required: No

New sign-ups now get a Default project automatically

New accounts landed on an empty dashboard with no projects available. The projects endpoint now creates a Default project on first load for any account that has none.

Show details ▾
  • Self-healing: existing accounts with no projects also receive a Default project on their next dashboard load.
  • The auto-created project is plan-agnostic; the existing gate for user-initiated project creation is unchanged.
Web v1.41.2permalink
Bug fixLowWebAction required: No

Fixed an intermittent load race that left dashboard pages blank on hard refresh or fresh login

Around 25 dashboard pages could appear blank on a hard refresh or fresh login because data fetching started before Clerk had finished hydrating. All affected pages now wait for Clerk to be ready before fetching.

Show details ▾
  • Around 25 dashboard pages now wait for the auth session to be ready before fetching data.
  • Covers hard page load and fresh login in addition to client-side navigation.
API v1.45.0permalink
FeatureLowWebAPIAction required: No

A new Feed: your logged-in home for AI news and benchmarks

Signed-in users now land on a Feed: one reverse-chronological stream of the latest AI news and community benchmark runs. News items appear compressed to a short skeleton with a compression-ratio badge, so the feed doubles as a live demo of what gotcontext does. The full tools dashboard stays one click away in the nav.

Show details ▾
  • New /dashboard/feed route is the default landing page after sign-in; the tools dashboard remains in the navigation.
  • Each news card shows a compressed excerpt with a ratio badge (for example, "3.4× compressed").
  • Public GET /v1/feed merges news and benchmark activity into one paginated stream.
  • Read-only for now. Voting and comments arrive as the community grows.
  • New auto-published news articles are now cleaned of stock AI phrasing before they go live, with facts and numbers preserved.
API v1.44.0permalink
ImprovementLowAPIMCP GatewayAction required: No

Automatic capacity scaling for steadier performance under load

The API now scales its compute capacity to live demand, so response times stay steady when traffic rises and costs stay low when it is quiet. No action required. This is fully automatic.

Show details ▾
  • A live active-users signal now drives how many machines run, scaling up under load and back down when idle.
  • Behaviour is unchanged for callers. Requests are simply served by more capacity when demand is high.
API v1.43.20permalink
Bug fixHighAPIMCP GatewayAction required: No

Compressing a very large document no longer fails

Compressing a large file (multi-megabyte documents producing tens of thousands of chunks) is now reliable. Previously the engine could exhaust memory building its internal similarity graph and the request would fail; memory is now bounded regardless of document size, and compression results are unchanged.

Show details ▾
  • The semantic graph is now built in bounded blocks instead of one large all-pairs matrix, so peak memory scales with document size rather than its square.
  • Output is identical to before. The change is purely how the graph is computed, locked by equivalence + memory-bound regression tests.
API v1.43.19permalink
ImprovementMediumMCP GatewayAction required: No

Framework docs lookups now return real documentation

Looking up Next.js, Pydantic, Drizzle, or FastMCP through the framework-docs tool now returns the actual API documentation with code examples, indexed from each project’s clean machine-readable docs. More frameworks follow.

Show details ▾
  • Four frameworks were re-indexed from their clean documentation and now return relevant prose + code instead of navigation HTML.
  • Indexing now processes large docs in bounded pieces, so re-indexing a big documentation set is reliable.
API v1.43.18permalink
ImprovementMediumMCP GatewayAction required: No

Framework docs re-indexed from clean machine-readable sources

Framework documentation lookups now return real documentation prose for the first set of frameworks (Next.js, Pydantic, Drizzle, FastMCP), re-indexed from their clean machine-readable docs instead of scraped landing-page HTML. More frameworks follow.

Show details ▾
  • Docs are now indexed from each framework’s clean llms-full.txt where available, so results are documentation rather than navigation menus or page chrome.
  • Re-indexing replaces the prior index for a framework cleanly (the old entries are retired, not left to dilute results).
  • A safeguard keeps results compact for any framework not yet re-indexed, so nothing regresses while the rollout continues.
API v1.43.17permalink
Bug fixMediumMCP GatewayAction required: No

Framework docs lookup now returns readable documentation

The free framework-docs lookup tool now returns the actual documentation text instead of a compressed placeholder. Where a framework was already indexed cleanly you’ll see real prose; a broader re-index of the framework catalog is in progress.

Show details ▾
  • Results previously showed a compressed “hidden detail” placeholder rather than the documentation itself.
  • The tool now prefers the raw documentation slice, falling back to the compact form only when a clean source has not been indexed yet, so nothing regresses.
  • A follow-up re-indexes each framework from its clean machine-readable docs so every framework returns real prose.
API v1.43.16permalink
Bug fixMediumMCP GatewayAction required: No

ingest_context now accepts a file_url with no inline text

If you ingest a document by URL through the ingest_context MCP tool, the call now works. Previously a file_url-only request was rejected with a “text cannot be empty” error before the URL was ever fetched; passing inline text was unaffected.

Show details ▾
  • ingest_context lets you supply a document two ways, inline text or a remote file_url, but a file_url-only call was being rejected by an input check that always required text.
  • The check now skips the text requirement when a file_url is provided, so the tool fetches the URL as documented.
  • Inline-text ingestion, and the rule that you pass one of the two (not both), are unchanged.
Web v1.39.19permalink
InternalLowWebAction required: No

Release notes brought current + kept in sync automatically

These public release notes are now caught up to the latest release, and a deploy-time check blocks a release if they fall behind, so this page stays current going forward.

Show details ▾
  • The customer-facing changelog had drifted behind the internal release log; it is now current.
  • The deploy-time sync check was repaired (it had stopped recognising newer releases) and now hard-fails on drift.
API v1.43.15permalink
Bug fixHighAPIAction required: No

Referral credits now apply exactly once, even under concurrent or retried sign-ups

If you refer someone, your Pro period is extended exactly once. Previously a rapid retry of the sign-up event could double-apply the credit, and a separate edge case could under-apply it when two referrals landed at the same moment.

Show details ▾
  • Concurrent or replayed sign-up events no longer double-extend the referrer’s Pro period.
  • Two referrals for the same referrer arriving together now stack correctly instead of one overwriting the other.
  • The billing call that syncs the extended period is bounded by a timeout so a slow upstream can’t stall the credit.
API v1.43.13permalink
ImprovementMediumAPIMCP GatewayAction required: No

More reliable inbound event processing + zero-loss deploys

Billing, referral, and usage events delivered by our providers are now de-duplicated and survive a deploy without being dropped, so dashboard usage and account state stay accurate across releases.

Show details ▾
  • Duplicate provider deliveries (timeout-retries, replays) are now ignored idempotently.
  • A deploy no longer drops in-flight usage rows. The server flushes its write-queue on shutdown.
API v1.43.9permalink
Bug fixMediumAPIWebAction required: No

Billing: plan state refreshes on renewal + clear past-due / canceled warnings

Your plan status now updates correctly when a subscription renews, and the billing page shows a clear banner if a subscription is past-due or canceled instead of appearing active.

Show details ▾
  • A renewal now refreshes the stored subscription row (previously it could go stale on renewal).
  • The billing page surfaces an amber past-due / red canceled banner instead of silently showing an active plan.
Web v1.39.18permalink
ImprovementLowWebAction required: No

Dashboard overview + site accessibility and reliability pass

The dashboard overview plus the security, status, and Agent Context Hub pages got an accuracy, accessibility, and reliability pass, including corrected API code samples, keyboard-focus rings, and a status page that no longer hangs when the API is slow.

Show details ▾
  • Dashboard “first compress” code samples now use the real flat response fields.
  • The status page health check times out and reports “investigating” instead of hanging when the API is slow.
  • Accessibility: visible keyboard-focus rings, screen-reader live regions, and proper table labelling.
Web v1.39.13permalink
FeatureLowWebAction required: No

New per-model token-cost savings pages

Added dedicated pages at /savings-by-model showing measured compression savings and live per-token pricing for each major model (Claude, GPT, Gemini, and more), each with a built-in “try it” compression demo.

Show details ▾
  • Each page shows the model’s measured compression ratio and live pricing.
  • Only models with an honestly-measured ratio are indexed. No projected or fabricated numbers.
API v1.37.8permalink
InternalLowMCP GatewayAction required: No

Maintenance: tensor-grep dependency bumped to 1.13.21

Internal dependency update. tensor-grep >=1.13.21 brings 25+ patches from the 1.12→1.13 minor series. Three MCP tools (gc_agent_capsule, gc_context_render, gc_edit_plan) updated to use the new positional CLI form to maintain compatibility. No user-facing behaviour changes.

Show details ▾
  • Three MCP tools (gc_agent_capsule, gc_context_render, gc_edit_plan) updated to maintain compatibility with the new dependency version.
API v1.37.7permalink
Bug fixLowAPIAction required: No

Internal stability: async background task cleanup

Three background-task sites had cleanup warnings under Python 3.14 that could cause unpredictable shutdown behaviour. All three are now cleaned up correctly.

Show details ▾
  • Background tasks in the News, Batch Queue, and key-revoke broadcast paths now clean up reliably on shutdown.
API v1.37.6permalink
Bug fixLowAPIAction required: No

Internal stability: two compression engine error fixes

Two internal bugs in the compression engine: ACE bullet ingestion could crash on a malformed payload, and a dependency import path was outdated. Both are fixed.

Show details ▾
  • ACE bullet ingestion now handles missing fields gracefully instead of crashing.
  • A deprecated internal dependency import path has been updated.
Web v1.37.4permalink
Bug fixMediumWebAction required: No

Fix: /news command palette showed raw locale key + empty state hid "No articles" message

See the web-v1.37.4 entry for full details.

Show details ▾
  • Command palette /news entry now shows correct label instead of raw locale key.
  • /news empty state now renders "No articles published yet." alongside the newsletter signup form.
API v1.37.5permalink
Bug fixLowAPIAction required: No

Internal stability: billing SDK test isolation fix

Test-environment only. No customer-facing change. The billing SDK now initialises correctly in test environments, eliminating spurious errors during test teardown.

Show details ▾
  • Billing SDK no longer attempts to connect to external services during test runs.
Web v1.29.2permalink
Bug fixMediumWebAction required: No

Fix: /news command palette showed raw locale key + empty state hid "No articles" message

Two customer-visible bugs on the /news surface. (1) The command palette (Cmd+K) entry for /news displayed a raw key string instead of the correct label. (2) The /news empty state (zero articles published) showed the newsletter subscription form but suppressed the "No articles published yet." message.

Show details ▾
  • Command palette /news entry now displays "News / Industry AI news + analysis" (EN) and "Actualités / Actualités et analyses IA" (FR).
  • /news empty state now correctly renders "No articles published yet." alongside the newsletter signup form.
API v1.37.3permalink
Bug fixMediumAPIAction required: No

Fix: multimodal_ingest MCP tool crashed on every call

The multimodal_ingest MCP tool raised an error on every call. The underlying multimodal compression component was missing a required method in its text-encoder adapter. Fixed.

Show details ▾
  • The multimodal_ingest tool now works correctly. The text-encoder adapter now implements all required methods.
API v1.37.2permalink
Bug fixHighAPIAction required: No

P0 hotfix: cache circuit breaker flapping, request amplification fixed

The cache circuit breaker flapped open/closed roughly 80 times over about 12 hours. Auth, rate-limiting, and plan-cache lookups fell back to slower paths on each open cycle, adding latency. The site remained up throughout. Root cause: an internal telemetry counter fired extra cache requests per operation (3× amplification), exhausting the monthly free-tier cap.

Show details ▾
  • Each cache operation now fires exactly one request instead of three.
  • The circuit breaker stabilised after the monthly cap reset.
API v1.37.1permalink
Bug fixHighAPIAction required: No

P0 hotfix: 3 endpoints returned 500 on invalid input

Three API endpoints returned 500 instead of the correct 400 or 404 on invalid or missing input. No data loss. Fixed with proper input validation.

Show details ▾
  • POST /v1/keys/confirm/{token_hash}: now returns 400 on a malformed token, 404 on an unknown token.
  • DELETE /v1/saved-views/{view_id}: now returns 400 on an invalid ID format, 404 on an unknown or unauthorised view.
  • GET /v1/usage/events/{event_id}: now returns 400 on an invalid ID format, 404 on a missing row.
API v1.37.0permalink
FeatureLowMCP GatewayAction required: No

gc_search_docs: hybrid keyword + semantic re-ranking

gc_search_docs now runs a two-stage retrieval: keyword search to find candidate chunks, then semantic re-ranking to promote the most relevant results. Semantically relevant chunks that score lower on keyword search are now promoted to their correct position. Falls back to keyword-only when embeddings are unavailable. Response includes a score_type field ("rrf" | "bm25") indicating which retrieval path was used.

Show details ▾
  • Stage 1: keyword search for candidate chunks. No change to existing behaviour.
  • Stage 2: semantic re-ranking fused with keyword scores. Falls back gracefully to keyword-only when the semantic model is unavailable.
  • New score_type field in the response: "rrf" when hybrid retrieval succeeds, "bm25" on fallback.
API v1.36.0permalink
FeatureLowAPIAction required: No

Knowledge Hub REST API: /v1/kb/* mirrors all 7 MCP tools

Non-MCP clients (curl, Python SDK, server-side fetch) can now use Knowledge Hub via standard REST without wiring an MCP transport. All 7 gc_kb_* operations are available: ingest, list, get, edit (optimistic concurrency), delete, version history, and semantic query.

Show details ▾
  • POST /v1/kb/items: ingest a document (name + content or URL, idempotent by name per project).
  • GET /v1/kb/items: list items with cursor pagination and optional status filter.
  • GET /v1/kb/items/{id}: get item metadata and latest content.
  • PATCH /v1/kb/items/{id}: edit with optimistic concurrency (base_version_id required); returns 409 + current_version_id on conflict.
  • DELETE /v1/kb/items/{id}: soft-delete, returns 204 No Content.
  • GET /v1/kb/items/{id}/versions: full version history with consecutive diffs.
  • POST /v1/kb/query: semantic search returning ranked chunks with cosine scores.
  • Project binding via API key (request.state.project_id). No project_id in URL, matching MCP tool pattern. Clerk JWT callers receive 422 directing them to /v1/projects/{id}/knowledge/*.
API v1.35.7permalink
ImprovementLowWebAPIAction required: No

Advisory MCP tool calls now visible in dashboard; /news/[slug] gets stale cache + error boundary

Orchestrator sessions that exclusively used advisory tools (gc_pre_flight, tool_help, search_semantic, etc.) showed zero events on the dashboard despite 50+ MCP calls. Advisory tools now write zero-token activity rows so all tool usage is visible. The /news article detail page now serves stale content on transient errors rather than propagating a 5xx to visitors.

Fixed in:
API v1.35.7
Components:
MCP Gateway · Dashboard · News page
Show details ▾
  • Advisory MCP tools (gc_pre_flight, tool_help, search_semantic, gc_blast_radius, gc_lookup, recommend_compression) now appear in the dashboard activity feed.
  • Compression metrics remain unaffected. Advisory tool calls do not count against token totals.
  • Dashboard overview adds a "compress only / all activity" toggle (persists across sessions).
  • /news article detail pages now serve cached content on transient errors instead of showing an error page.
API v1.35.6permalink
ImprovementLowAPIAction required: No

/v1/global-savings now sets Cache-Control: public, max-age=60 for Vercel edge caching

The landing page hero counter endpoint is called on every SSR render. Adding a 60s public Cache-Control header lets the Vercel edge layer absorb repeated calls, reducing Fly request rate on the highest-traffic surface without any behavior change to the displayed data.

Fixed in:
API v1.35.6
Components:
API
Show details ▾
  • GET /v1/global-savings now returns Cache-Control: public, max-age=60, s-maxage=60.
  • Vary: Accept-Encoding added for correct CDN content negotiation.
  • Data changes at most once per minute in practice (in-process 1h cache); 60s CDN TTL is safe.
API v1.35.5permalink
Bug fixLowWebAPIAction required: No

llms.txt line 36 stale tool count fixed; /v1/filter-cli documented in API reference

gotcontext.ai/llms.txt now consistently shows 148 tools across all bullets (line 36 previously retained the stale "142" count). docs/architecture/API.md now documents the /v1/filter-cli endpoint which was undocumented since its initial ship.

Fixed in:
API v1.35.5
Components:
llms.txt · API documentation
Show details ▾
  • llms.txt MCP endpoint bullet now shows the correct tool count.
  • /v1/filter-cli endpoint added to the API reference documentation.
API v1.35.4permalink
Bug fixHighAPIMCP GatewayWebAction required: No

Post-ship audit bundle: gc_read_doc HTML fix, NewsArticle type seam, drafter truncation, /news SSR cache

gc_read_doc now returns readable markdown instead of raw HTML. The /news listing page serves stale cache on rate-limit bursts rather than 500ing all concurrent visitors. The news drafter no longer retries (at $0.12/call) when title/excerpt exceed length limits. Frontend NewsArticle type is split to match the backend wire shape, eliminating undefined reads on list vs detail fields.

Fixed in:
API v1.35.4
Components:
MCP Gateway · News pipeline · News page
Show details ▾
  • gc_read_doc now returns readable markdown instead of raw HTML for documentation pages.
  • The /news listing page now serves cached content on rate-limit bursts rather than returning an error to all concurrent visitors.
  • The news drafter no longer enters a retry loop when a generated title or excerpt is too long.
API v1.35.3permalink
Bug fixLowAPIMCP GatewayAction required: No

Reliability bundle: revoke broadcast ordering, document-fetch size limit, cross-document search isolation

Revoked API keys are now reliably invalidated even when the cache-invalidation call fails. The document-fetch size limit now raises an error instead of silently passing. Cross-document search isolation is now confirmed end-to-end.

Fixed in:
API v1.35.3
Components:
API key lifecycle · MCP Gateway
Show details ▾
  • Revoke broadcast now writes the invalidation marker before attempting the cache-invalidation call. A cache failure can no longer leave a revoked key appearing valid.
  • Document-fetch size limit now raises an error explicitly instead of silently allowing an oversized fetch.
  • Cross-document search isolation confirmed end-to-end: results from one document cannot appear in another document's search.
API v1.35.2permalink
Bug fixMediumAPIAction required: No

KB async upload: stuck-INGESTING recovery

File uploads that entered INGESTING but never completed (worker crashed between tx1 and tx2, e.g. on Fly machine suspend) now recover automatically. A new hourly cron sweeps rows stuck in INGESTING for >10 minutes and transitions them to FAILED with a retry message. Previously these rows were invisible to the kb-process-uploads cron (WHERE status='UPLOADED') and sat stuck indefinitely.

Fixed in:
API v1.35.2
Components:
Knowledge Hub
Show details ▾
  • File uploads that entered processing but never completed now recover automatically. They are marked as failed with a retry message after 10 minutes.
API v1.35.1permalink
FeatureMediumMCP GatewayAPIAction required: No

search_semantic and gc_search_docs: hybrid keyword + semantic retrieval

search_semantic and gc_search_docs now fuse semantic and keyword scores for better recall on exact-token queries. Response carries score_type: "rrf" | "cosine" so callers can detect which retrieval path was used.

Fixed in:
API v1.35.1
Components:
MCP Gateway
Show details ▾
  • Keyword and semantic scores are now fused for better combined retrieval quality.
  • Cross-document score isolation is enforced. Results from one document cannot skew scores for another.
  • Response includes a score_type field: "rrf" when hybrid retrieval succeeds, "cosine" when falling back to semantic-only.
API v1.34.35permalink
FeatureMediumMCP GatewayAPIWebAction required: No

MCP catalog hot-reload + circuit-breaker telemetry + SSE keepalive + scoped API keys

Operators can now hot-reload the MCP tool catalog without restarting servers (admin-only, rate-limited). Circuit breakers emit Prometheus telemetry. MCP SSE connections survive idle proxy timeouts. Dashboard ships a least-privilege scope picker for minting scoped gc_ keys. Document-fetch paths hardened against requests to private or internal network addresses.

Fixed in:
API v1.34.35
Components:
MCP Gateway · Dashboard · API key lifecycle · Compression API
Show details ▾
  • Admin: POST /v1/admin/mcp/reload hot-reloads the MCP tool catalog without a server restart (admin scope required, rate-limited to once per hour).
  • Observability: circuit breakers for all key dependencies now emit Prometheus metrics (state, transitions, call outcomes).
  • Reliability: MCP SSE connections now send periodic keepalive pings to survive idle proxy timeouts.
  • Security: API key scopes are now enforced end-to-end on all routes.
  • Dashboard: a scope picker lets you mint least-privilege gc_ keys restricted to specific resources and operations.
  • Security: document-fetch paths (ingest_context, Knowledge Hub) now block requests to private or internal network addresses.
API v1.34.34permalink
FeatureLowMCP GatewayAction required: No

MCP tools now signal parallel-dispatch eligibility via readOnlyHint annotation

Three read-only MCP tools (gc_lookup, search_semantic, read_skeleton) are now marked as read-only in their schema, following the MCP spec's readOnlyHint annotation. Compatible MCP clients can use this hint to safely run these tools in parallel.

Fixed in:
API v1.34.34
Components:
MCP Gateway
Show details ▾
  • gc_lookup, search_semantic, and read_skeleton are now annotated as read-only.
  • Compatible MCP clients can use this hint to safely run these tools in parallel.
API v1.34.33permalink
Bug fixMediumMCP GatewayAction required: No

gc_search_docs now matches morphological variants (authentication → authenticate)

gc_search_docs now matches morphological variants of a query term. Previously a search for "authentication" returned nothing when the docs contained only "authenticate" or "auth". Query terms of six or more characters now match by prefix, so "authentication" matches "authenticate" and "compression" matches "compressed". Shorter queries still require an exact match to avoid false positives.

Fixed in:
API v1.34.33
Components:
MCP Gateway
Show details ▾
  • Query terms with 6 or more characters now match morphological variants (e.g. "authentication" matches "authenticate").
  • Short queries still require exact match to avoid false positives.
API v1.34.32permalink
Bug fixHighMCP GatewayAction required: No

Hotfix: gc_search_docs now actually returns results; gc_read_doc respects size limits

Two bugs found immediately after the v1.34.31 release. (1) gc_search_docs returned empty results because it assumed a static documentation-index path that does not exist in production; it now fetches the live index directly. (2) gc_read_doc could return documents large enough to exceed MCP client tool-result limits; responses are now capped to a safe size.

Fixed in:
API v1.34.32
Components:
MCP Gateway
Show details ▾
  • gc_search_docs now fetches the live documentation index directly instead of assuming a static file path.
  • gc_read_doc now caps response size to avoid exceeding tool-result limits in MCP clients.
API v1.34.31permalink
FeatureLowMCP GatewayAction required: No

Search + read gotcontext docs via MCP (free tier): gc_search_docs + gc_read_doc

First ship of the MCP API parity plan (3-4 week roadmap, CEO-approved). Agents can now search and read gotcontext product documentation without leaving their terminal. Free for all plans, no auth required. Top-of-funnel conversion utility per industry research on Context7 + ref.tools precedents. Install the plugin once, ask your AI "how do I authenticate with gotcontext?", and it answers from the live docs.

Fixed in:
API v1.34.31
Components:
MCP Gateway · Claude Code plugin
Show details ▾
  • Two tools: gc_search_docs searches by keyword; gc_read_doc fetches the full content of a specific page.
  • Session-aware deduplication. Repeated calls in the same session return new content rather than the same result.
  • Responses longer than 5,000 tokens are truncated to a relevant excerpt with a truncated: true flag.
  • Available on all plans at no cost.
API v1.34.30permalink
ImprovementLowMCP GatewayAction required: No

modulate_region now accepts singular node_id alongside node_ids

Agents calling modulate_region with a singular node_id string previously got a validation error because only the plural node_ids list form was accepted. Now both forms work: a singular node_id string is accepted and treated as a single-element list. Backward compatible. Existing node_ids callers are unchanged.

Fixed in:
API v1.34.30
Components:
MCP Gateway
Show details ▾
  • Singular node_id (string) and plural node_ids (list) are both accepted.
  • If both are passed, node_ids takes precedence.
  • Passing neither returns a clear error message.
API v1.34.29permalink
ImprovementLowMCP GatewayAction required: No

batch_ingest_documents MCP schema now exposes scope params (session_id, workspace_id, user_id, agent_id)

Discoverability fix from v1.34.28 F12 verification: the handler already accepted session_id but the MCP tools/list schema for batch_ingest_documents did not declare it (or the other 3 scope params). Agents enumerating the catalog now see these params via the documented schema. Per-session savings tracking from v1.34.28 now works correctly when callers want non-default session scoping. Handler behavior unchanged.

Fixed in:
API v1.34.29
Components:
MCP Gateway
Show details ▾
  • Schema discoverability fix. Handler behaviour unchanged.
  • Agents using batch_ingest_documents can now pass workspace_id, user_id, agent_id, and session_id via the documented schema.
API v1.34.28permalink
Bug fixMediumMCP GatewayAction required: No

Per-session savings now reflect read_skeleton, batch_ingest, ingest_directory, and filter_cli_output

v1.34.27 fixed F12 narrowly on ingest_context, but handlers that bypassed it (BatchCompressionManager.compress_batch → compressor.ingest_file_async directly) still skipped the per-session SavingsTracker. v1.34.28 wires the four remaining real-savings producers: read_skeleton, batch_ingest_documents, ingest_directory, and filter_cli_output. The broader F12 class is now fully closed. Every agent that calls get_savings_report / get_savings_inline mid-session sees real numbers regardless of which compression tool produced them.

Fixed in:
API v1.34.28
Components:
MCP Gateway
Show details ▾
  • Per-session savings reports now include activity from read_skeleton, batch_ingest_documents, ingest_directory, and filter_cli_output.
  • A tracker error never fails the underlying tool call. Savings accounting is best-effort.
API v1.34.27permalink
Bug fixMediumMCP GatewayAction required: No

Per-session savings reports now reflect ingest_context activity

Pre-fix the SavingsTracker was dead infrastructure. _get_tracker existed but was only ever called by .get_report() paths, never .record(). Every agent that called get_savings_report or get_savings_inline mid-session after an ingest_context call saw $0 / 0 tokens saved even after real compression activity. The mismatch with /v1/global-savings (which already showed 1.38M tokens saved across all users from the persistent usage_events table) confirmed the per-session tracker was never receiving the events the report was reading. Agents querying their own savings now see real numbers.

Fixed in:
API v1.34.27
Components:
MCP Gateway
Show details ▾
  • Per-session savings reports now include activity from ingest_context.
  • A tracker error never fails the underlying ingest call.
API v1.34.26permalink
InternalLowAPIAction required: No

Unregistered unused /webhooks/resend route

No Resend webhook is configured, so the registered endpoint was being probed by bots. POST /webhooks/resend now returns 404.

Fixed in:
API v1.34.26
Components:
Webhook delivery
Show details ▾
  • POST /webhooks/resend now returns 404.
API v1.34.25permalink
FeatureLowMCP GatewayAction required: No

Agent-driven gc_ key lifecycle: mint + revoke via MCP

Agents (CI runners, Claude Code sessions, automation) can now manage gc_ API key lifecycle without a dashboard session. Pro+ only.

Fixed in:
API v1.34.25
Components:
MCP Gateway · API key lifecycle
Show details ▾
  • gc_mint_api_key: name (required), project_id (optional), expires_in_days (1-365, default 30), environment (prod|staging|dev), default_model. Returns the full key value once at creation.
  • gc_revoke_api_key: key_id (required). Owner-only; cross-user attempts return 403.
  • Key creation and revocation through MCP produce the same audit log entries as the dashboard.
API v1.34.24permalink
InternalLowAPIAction required: No

Internal: reduce observability noise from unconfigured Resend webhook

Reduced error noise from an unconfigured Resend webhook endpoint. The 400 response to inbound calls is unchanged.

Fixed in:
API v1.34.24
Components:
Webhook delivery
Show details ▾
  • 400 response unchanged. Inbound callers receive the same rejection as before.
API v1.34.23permalink
Bug fixHighMCP GatewayAction required: No

read_skeleton JSON serialization 500 + ingest_context ENOENT on multi-segment file_id

Two bugs found in internal testing. (1) Calling ingest_context with an inline query parameter returned a 500 error, which broke the recommended ingest-and-query workflow. (2) Calling ingest_context with a multi-segment file_id failed on first write because the parent directories were not created automatically.

Fixed in:
API v1.34.23
Components:
MCP Gateway
Show details ▾
  • ingest_context with a query parameter no longer returns 500.
  • ingest_context with multi-segment file_id paths now creates the necessary directories automatically.
API v1.34.22permalink
Bug fixLowMCP GatewayAction required: No

read_skeleton default mode changed to "auto" + internal test fixes

read_skeleton now defaults to "auto" selection mode, which routes to the best available compression strategy. Previously it defaulted to "baseline".

Fixed in:
API v1.34.22
Components:
MCP Gateway
Show details ▾
  • read_skeleton selection_mode now defaults to "auto" (was "baseline").
API v1.34.21permalink
FeatureMediumAPIMCP GatewayAction required: No

ingest_context now accepts a remote URL to fetch and ingest server-side

MCP agents can now pass a remote HTTPS URL to ingest_context instead of pasting document text inline. The server fetches and ingests the content, with validation that the URL resolves to a public address. text and file_url are mutually exclusive; successful fetches stamp source_url on the response.

Fixed in:
API v1.34.21
Components:
MCP Gateway
Show details ▾
  • file_url accepts any public HTTPS URL; requests to private or internal addresses are rejected.
  • Redirects are not followed.
  • Responses larger than 10 MB are rejected.
  • Only text and document content types are accepted; binary/media responses are rejected.
  • source_url is included in the ingest response for provenance tracking.
  • text and file_url are mutually exclusive. Passing both returns a clear validation error.
API v1.34.20permalink
FeatureMediumAPIMCP GatewayAction required: No

gc_rebind_api_key: headless API key project attribution via MCP

CI runners, Claude Code sessions, and automation can now change which project a gc_ API key is attributed to without a dashboard session. Pro+ only.

Fixed in:
API v1.34.20
Components:
MCP Gateway · API key lifecycle
Show details ▾
  • gc_rebind_api_key: rebinds a gc_ API key to a different project, or clears its project binding. Pro/Team/Enterprise only.
  • Owner-only: cross-user rebinds are rejected.
  • Revoked keys cannot be rebound.
  • Rebinding takes effect immediately. No stale cache window.
  • Audit-logged with the same trail as dashboard rebinds.
  • PATCH /v1/keys/{id} response now includes cache_invalidated: true after a project rebind.
API v1.34.19permalink
Bug fixMediumAPIAction required: No

News drafter body substance floor: closes auto-published shitpost gap

The full-site audit caught an auto-published one-word "Bruh" article on /news with full Industry News card treatment. The ingest quality gate (v1.34.0) filters by title regex + ups + comments threshold, but the drafter validator accepted any truthy body. A clickbait-titled high-ups Reddit post with a one-word body cleared both ingest AND drafting. The fix adds a minimum body floor at validation time so future shitposts are rejected before queue insertion.

Fixed in:
API v1.34.19
Components:
News pipeline
Show details ▾
  • Article body must now be at least 200 characters and 30 words to pass drafting validation.
Web v1.29.2permalink
Bug fixHighWebAction required: No

/news/[slug] Clerk middleware crash + /news/editorial-standards redirect

Every uncached SSR render of /news/[slug] threw `Clerk: auth() was called but Clerk can't detect usage of clerkMiddleware()` because src/proxy.ts only wraps clerkMiddleware around protected routes. The (unauth)/news/[slug] paywall added in v1.28.3 called auth() from a route NOT covered by the matcher. Vercel CDN cache masked most events; Sentry surfaced 2 events from manual URL-entry to /news/editorial-standards. The fix uses try-catch so the throw is treated as "no session" (paywall preview path). Also added a permanent redirect /news/editorial-standards → /news/about so external references no longer hit the [slug] catch-all.

Fixed in:
Web v1.29.2
Components:
News page
Show details ▾
  • External references to /news/editorial-standards now redirect to /news/about.
API v1.34.18permalink
ImprovementInformationalAPIAction required: No

News ingest hardening: informal-tone gate + source_slug propagation

Tightened the ingest quality gate to reject overly-informal Reddit titles before drafting, and threaded the source_slug field through the publish path so per-source filters on /news work correctly. Internal-quality improvements. No customer-facing UX change.

Fixed in:
API v1.34.18
Components:
News pipeline
Show details ▾
  • See CHANGELOG.md [1.34.18] for the per-commit detail
API v1.34.2permalink
InternalInformationalAPIAction required: No

News ingest test hardening (internal)

Internal test-suite hardening on the news ingest path. No customer-facing change. Backfilled to satisfy the public-changelog-sync gate (CEO directive 2026-05-19 requires every CHANGELOG.md version to appear on this page).

Fixed in:
API v1.34.2
Components:
News pipeline
Show details ▾
  • See CHANGELOG.md [1.34.2] for the per-commit detail
Web v1.27.9permalink
Bug fixInformationalWebAction required: No

/news round 1 of rate-fix-rate loop: 2 high-confidence fixes (head metadata + inline code)

Two /news fixes: (1) Page head metadata still showed old "AI News" / "Hand-curated" strings after the H1 rename, causing incorrect titles in browser tabs and link unfurls. (2) Inline code spans in news articles were rendering as full-width blocks instead of inline.

Fixed in:
Web v1.27.9
Components:
News page
Show details ▾
  • Page title updated to "Intelligence | gotcontext.ai" (matches the renamed H1).
  • Meta description updated to accurate framing.
  • Inline code spans now render inline.
  • Lab-blog RSS ingest enabled (OpenAI, DeepMind, HuggingFace).
Web v1.27.8permalink
Bug fixInformationalWebAction required: No

RSS feed at /news/feed.xml: aligned with the news strategy ship

The Atom/RSS feed at /news/feed.xml predates the news strategy ship and carried 3 misalignments: (1) channel title "AI News" collided with competitor AINEWS brand (2) channel description still claimed "Hand-curated", same lie the listing page subhead fixed in v1.27.6 (3) entry links pointed to external source_url instead of on-domain /news/[slug], the same SEO/attention-leakage problem the listing card title fix addressed. RSS subscribers (power users + LLM agents) now land on our analysis where the source is then linked at the bottom.

Fixed in:
Web v1.27.8
Components:
News page
Show details ▾
  • Channel title: "gotcontext.ai — AI News" → "gotcontext.ai — Intelligence" (matches H1 rename in v1.27.6).
  • Channel description: dropped "Hand-curated" claim; replaced with truthful framing matching the listing page.
  • Entry link: always /news/[slug] (on-domain), never external source_url. GUID always isPermaLink="true".
  • No backend change. Atom/RSS validation: well-formed XML (no schema change).
  • tsc --noEmit clean.
API v1.34.6permalink
FeatureInformationalAPIAction required: No

Multi-source news ingest: infrastructure for lab blogs and HN (disabled by default)

Infrastructure for ingesting news from multiple source types (lab blogs, HN). Disabled by default. Production continues on Reddit-only until sources are configured.

Fixed in:
API v1.34.6
Components:
News pipeline
Show details ▾
  • Per-source adapters added for RSS-based lab blogs and HN.
  • Quality gate thresholds adjusted for primary source types that have no community engagement signal.
  • Feature disabled by default; no production behaviour change until sources are configured.
Web v1.27.7permalink
Bug fixInformationalWebAction required: No

Markdown tables now render on news article pages

The news article page was missing support for GitHub Flavored Markdown, so tables, strikethrough, and autolinks rendered as plain text. Cost-comparison tables in articles now display correctly with proper alignment.

Fixed in:
Web v1.27.7
Components:
News page
Show details ▾
  • Markdown tables now render with correct borders, monospace numerics, and overflow scroll on narrow viewports.
  • No backend change.
API v1.34.5permalink
FeatureInformationalAPIAction required: No

Cost-of-Inference weekly column: deterministic cost tables across live model catalog

New weekly article format publishing deterministic per-model cost calculations across the live model pricing catalog. Numbers are formula-derived, not AI-generated. No hallucination risk on cost figures.

Fixed in:
API v1.34.5
Components:
News pipeline
Show details ▾
  • Cost table covers 3 canonical workloads: RAG pipeline, long-context coding assistant, and agent loop.
  • Table sorts cheapest-first; columns: Model | Provider | Cost / query | Cost / day | Cost / year.
  • Duplicate-publish protection ensures each week's article is generated at most once.
API v1.34.4permalink
FeatureInformationalAPIAction required: No

News articles upgraded to 600-900 word structured analysis

Drafted news articles now follow a structured 5-part format (lede, statistics, analysis, forward-looking, sources) at 600-900 words, replacing the previous 400-900 word unstructured format.

Fixed in:
API v1.34.4
Components:
News pipeline
Show details ▾
  • Required structure: factual lede, verbatim statistics, 2-3 paragraph analysis, forward-looking section, inline source citations.
  • Title format tightened to news-lede or analytical-lead style.
API v1.34.3 + Web v1.27.6permalink
FeatureInformationalAPIWebAction required: No

News page: content strategy update, copy improvements, and cost controls

The news section has been repositioned as an analyst surface focused on LLM unit economics and benchmark-backed analysis. Thumbnail generation costs reduced; clickbait headline patterns banned from the drafter.

Fixed in:
API v1.34.3 + Web v1.27.6
Components:
News page · News pipeline
Show details ▾
  • Thumbnail generation rate throttled to reduce daily spend.
  • Removed /news from top nav temporarily; route remains accessible for discovery and sitemaps.
  • Page heading renamed from "AI News" to "Intelligence".
  • Updated page subheading to accurately describe content sourcing.
  • Article listing cards now link to the on-site article page instead of the external source.
  • Source attribution de-duplicated to one location per card.
  • Drafter prompt updated to ban clickbait headline styles.
API v1.34.1permalink
Bug fixInformationalAPIAction required: No

News drafter re-applies quality gate at publish time to clear legacy queue

The quality gate added in v1.34.0 applied only to newly ingested items. Existing queued items were still eligible for publishing. The drafter now re-checks queued items at claim time and skips any that do not meet the current title criteria.

Fixed in:
API v1.34.1
Components:
News pipeline
Show details ▾
  • Previously queued items that fail the current quality gate are rejected and skipped.
API v1.34.0permalink
FeatureInformationalAPIAction required: No

News drafter now filters for important news: quality gate at ingest

Previously the drafter published every post that surfaced from community feeds, including help requests, weekly meta threads, and general questions. Ingest now applies a quality gate: minimum engagement thresholds (upvotes and comments) plus a title blocklist. Both thresholds must pass simultaneously.

Fixed in:
API v1.34.0
Components:
News pipeline
Show details ▾
  • Title blocklist rejects help requests, weekly meta threads, and discussion-tagged posts.
  • Minimum upvote and comment thresholds configurable without redeploy.
  • Primary data source upgraded from RSS to Reddit JSON API (RSS does not expose engagement counts); RSS retained as fallback.
  • Ingest response includes per-source gate pass/reject counts to assist threshold tuning.
Web v1.27.5permalink
Bug fixInformationalWebAction required: No

/news category filter: was showing 0 articles for every category

The category filter showed "All (30)" but every individual category chip showed 0 articles. The filter chip list was hardcoded with categories that did not match what the drafter actually produces. Fixed by deriving the chip list from the articles currently loaded. New categories automatically appear without any code change.

Fixed in:
Web v1.27.5
Components:
News page
Show details ▾
  • Category chips now derived from data rather than a hardcoded list.
  • Unknown categories fall back to a neutral indicator colour instead of rendering broken.
API v1.33.0permalink
FeatureInformationalAPIAction required: No

News drafter: structural rules for AI search citation eligibility

Six structural rules added to the drafter prompt shape every article toward eligibility for citation in AI search results (ChatGPT, Perplexity, Claude, Gemini). Rules focus on lede structure, named sources, concrete statistics, and self-contained excerpts.

Fixed in:
API v1.33.0
Components:
News pipeline
Show details ▾
  • Articles must open with a factual lede answering who/what/when/why.
  • Second paragraph must include a concrete statistic or verbatim claim from the source.
  • Named lab, company, or author must appear in the article body.
  • Excerpt must stand alone as a mini-lede (feeds OG meta and listing cards).
Web v1.27.4permalink
FeatureInformationalWebAction required: No

/news metrics instrumentation: pageview, scroll depth, source clicks, and AI Search referral attribution

Analytics instrumentation added to track which articles get visits and engagement. Captures article pageviews, scroll-depth milestones, source clicks, and referral channel, including distinguishing AI Search (ChatGPT, Perplexity, Claude, Gemini) from traditional search and social.

Fixed in:
Web v1.27.4
Components:
News page
Show details ▾
  • Article pageview fires once per article load; captures category and referral channel.
  • Scroll depth fires at 25/50/75/100% milestones, once per milestone per load.
  • Source click fires when a reader follows the link to the original source.
  • Listing pageview fires on the /news index with article count and referral channel.
  • AI Search referral category tracks ChatGPT, Perplexity, Claude, Gemini, Kagi, and You.com as a first-class channel.
Web v1.27.3permalink
FeatureInformationalWebAction required: No

/news SEO upgrade: NewsArticle JSON-LD enhancements and per-article sitemap entries

Each article page now emits richer JSON-LD structured data (canonical entity URL, article section, language, free-access flag, image as ImageObject). The sitemap now enumerates each published article individually with its last-modified date so search engines can crawl articles directly.

Fixed in:
Web v1.27.3
Components:
News page
Show details ▾
  • JSON-LD now includes canonical URL, category section, language, and free-access eligibility fields.
  • Image structured data upgraded to ImageObject format, resolving Google structured-data tester warnings.
  • Sitemap includes up to 200 article URLs per locale with accurate last-modified dates.
Web v1.27.2permalink
Bug fixInformationalWebAction required: No

/news thumbnails now display at thumbnail size instead of stretching to full-width

Article thumbnails on the news listing and article detail pages were rendering as full-width banners. The listing now shows a fixed-size thumbnail beside article content; the detail page caps the image at a compact width.

Fixed in:
Web v1.27.2
Components:
News page
Show details ▾
  • Listing card: thumbnail is now a fixed 160×100 image displayed beside the article text.
  • Detail page: thumbnail capped at 280px max-width.
  • No backend change; only render dimensions changed.
API v1.32.12permalink
Bug fixInformationalAPIAction required: No

News article thumbnails: retry logic and hourly backfill improve coverage from ~30% to ~80%

Production showed only about 30% of articles had thumbnails. The image generator sometimes returns a text-only response for certain article topics. A retry with a simplified prompt is now attempted, and an hourly backfill cron sweeps recent articles missing thumbnails.

Fixed in:
API v1.32.12
Components:
News pipeline
Show details ▾
  • On a failed image generation, one retry is attempted with a simplified category-only prompt.
  • Hourly backfill cron sweeps articles from the last 48 hours that are still missing thumbnails, capped at 10 per run.
API v1.32.11permalink
Bug fixCriticalAPIAction required: No

P0: news ingest silently fell back to 1 source after server recycle; 8-subreddit seed now durable

The 8-subreddit expansion shipped in v1.32.10 was seeded via a manual one-time database command rather than a schema migration. Server recycling wiped that data, causing ingest to silently fall back to a single source. The seed is now applied via a migration that survives every deploy.

Fixed in:
API v1.32.11
Components:
News pipeline
Show details ▾
  • Sources seeded: r/MachineLearning, r/OpenAI, r/LocalLLaMA, r/LLMDevs, r/AI_Agents, r/ClaudeCode, r/ClaudeAI, r/GeminiAI.
  • Idempotent seed. Safe to run on an already-seeded database.
API v1.32.10permalink
FeatureInformationalAPIAction required: No

News ingest now pulls from 8 subreddits covering AI engineering, Claude, OpenAI, and Gemini communities

Ingest was previously pulling from a single source. It now iterates over all configured sources. The source set expanded to 8 subreddits covering AI engineering practitioners, Claude Code workflows, and official lab feeds. A failed feed does not abort the remaining sources.

Fixed in:
API v1.32.10
Components:
News pipeline
Show details ▾
  • Sources: r/MachineLearning, r/LocalLLaMA, r/LLMDevs, r/AI_Agents, r/ClaudeCode, r/ClaudeAI, r/OpenAI, r/GeminiAI.
  • Cap of 50 entries per source per cycle.
  • Per-source error handling; a bad feed does not block other sources.
API v1.32.9permalink
Bug fixInformationalAPIAction required: No

Hotfix: news thumbnails were uploading to the wrong storage bucket, causing public URLs to 404

Thumbnail generation in v1.32.8 wrote to an incorrect storage bucket, so all generated thumbnail URLs returned 404. Thumbnails now write to the dedicated news-thumbnails bucket.

Fixed in:
API v1.32.9
Components:
News pipeline
Show details ▾
  • Thumbnail storage now uses a dedicated configuration separate from other storage buckets.
  • Previously generated orphaned thumbnails were cleared from affected draft records.
API v1.32.8permalink
FeatureInformationalAPIAction required: No

News drafter now generates an AI-produced hero thumbnail per draft

Every news draft now gets an original AI-generated 16:9 editorial thumbnail at draft time. Image generation runs concurrently with text drafting so wall time is not significantly increased. A monthly budget cap prevents runaway spend.

Fixed in:
API v1.32.8
Components:
News pipeline
Show details ▾
  • Image generation is best-effort; a failure does not block text drafting.
  • Monthly budget cap enforced; thumbnail generation is skipped once the cap is reached.
API v1.32.7permalink
Bug fixInformationalAPIAction required: No

Hotfix: admin "Approve" returned 500 when publishing a news draft

Every admin click on "Approve draft" returned HTTP 500. The publish, edit, and withdraw article paths were passing timestamp strings to the database instead of datetime objects.

Fixed in:
API v1.32.7
Components:
News pipeline
Show details ▾
  • Approve, edit, and withdraw article actions now work correctly.
API v1.32.6permalink
FeatureInformationalAPIAction required: No

News drafts auto-publish 1 hour after entering the queue

Drafts that are not manually reviewed within 60 minutes are automatically published. Human-reviewed drafts continue to publish immediately on click. The audit trail records whether an article was auto-published or human-approved.

Fixed in:
API v1.32.6
Components:
News pipeline
Show details ▾
  • Concurrent auto-publish runs never double-publish the same draft.
  • On a publish failure the draft is rolled back so the next run can retry.
  • Auto-publish and human-approved articles are distinguishable in the audit trail.
API v1.32.5permalink
Bug fixInformationalAPIAction required: No

Hotfix: admin drafts queue showed empty bodies when expanding a draft for preview

The draft list endpoint was omitting the article body from its response. Expanding any draft in the admin queue showed a blank body. Draft bodies now appear correctly.

Fixed in:
API v1.32.5
Components:
News pipeline
Show details ▾
  • Draft body field added to the draft list response.
Web v1.32.4permalink
Bug fixInformationalWebAction required: No

Hotfix: admin pages crashed because the draft list response shape did not match the frontend type

After v1.32.3 fixed admin authentication, both admin pages immediately crashed with a "Cannot read properties of undefined" error. The frontend type expected a wrapped object but the API returns a bare array. Both pages now render correctly.

Fixed in:
Web v1.32.4
Components:
Dashboard
Show details ▾
  • Draft list response now correctly typed as a bare array on the frontend.
API v1.32.3permalink
Bug fixInformationalAPIAction required: No

Hotfix: admin drafts queue returned 403 for every click even with a valid admin session

The public news read path was inadvertently matching the admin sub-path, causing the authentication middleware to skip session validation. Admin endpoints now correctly require authentication while public news reads remain unauthenticated.

Fixed in:
API v1.32.3
Components:
Dashboard
Show details ▾
  • Admin endpoints correctly require authentication.
API v1.32.2permalink
Bug fixInformationalAPIAction required: No

Hotfix: news-draft cron returned 500 due to incorrect timestamp format in database queries

The news drafter cron returned HTTP 500 after the auth bypass was fixed in v1.32.1. Timestamp values were being formatted as strings before being passed to the database, which requires datetime objects.

Fixed in:
API v1.32.2
Components:
News pipeline
Show details ▾
  • News drafting cron now completes successfully.
API v1.32.1permalink
Bug fixInformationalAPIAction required: No

Hotfix: news-draft cron returned 401 on every scheduled run

The news drafter cron endpoint was not correctly configured as a cron route, causing every scheduled run to be rejected before the cron secret check ran. No production cron runs were lost; the fix landed before the first scheduled trigger.

Fixed in:
API v1.32.1
Components:
News pipeline
Show details ▾
  • News drafting cron now runs on schedule.
API v1.32.0permalink
FeatureInformationalAPIWebAction required: No

In-tree AI News drafter pipeline and admin approval queue

An hourly cron now generates publication-ready news article drafts from ingested items, with editorial validation (kill-word checks, ownership-mention scrubbing) and a monthly budget cap. Drafts go to an admin approval queue before publishing.

Show details ▾
  • Concurrent cron runs cannot double-draft the same item.
  • LLM output is validated against a kill-word list and anonymous-ownership rules; two failures auto-reject the draft.
  • Admin queue at /dashboard/admin/news/drafts shows pending drafts with edit-in-place, approve, and reject actions.
  • Email notification sent when new drafts are ready for review.
API v1.31.2permalink
Bug fixInformationalAPIAction required: No

Dependency update: tensor-grep version pin updated; no customer-visible change

Dependency version floor updated. No customer-visible behaviour change.

Show details ▾
  • No subcommand signature changes; all 6 affected subcommands verified against the new version.
API v1.31.1 / Web v1.27.1permalink
Bug fixInformationalAPIWebAction required: No

Hotfix: Vercel production deploys had been failing since 2026-05-19

Production deploys were failing at the prerender step due to an auth hook used inside a component that runs at static-site-generation time where the auth provider is not in scope. The auth-aware navigation swap has been reverted.

Fixed in:
API v1.31.1 / Web v1.27.1
Components:
Dashboard
Show details ▾
  • Marketing nav always shows Sign In and Get free API key CTAs. Signed-in users can access the dashboard via the nav dashboard link, footer, keyboard shortcut, or direct URL.
  • Production deployments are restored.
API v1.31.0 / Web v1.27.0permalink
FeatureInformationalAPIWebAction required: No

News page: discoverability, RSS feed, newsletter capture, markdown rendering, hero image cards

The /news section was not linked from any navigation, footer, or sitemap. This release adds /news to all primary navigation entry points, replaces the empty-state dead-end with a newsletter capture form, adds an RSS feed, upgrades article rendering to full markdown, and adds reading-time, source attribution, and hero image cards.

Fixed in:
API v1.31.0 / Web v1.27.0
Components:
News page
Show details ▾
  • /news added to main nav, footer, sitemap, keyboard shortcut (G N), and dashboard menu.
  • Empty state replaced with a newsletter sign-up form; search and category tabs hidden when no articles are present.
  • RSS feed at /news/feed.xml (RSS 2.0, 50 most recent articles).
  • Article renderer upgraded to full markdown (lists, blockquotes, headings, code blocks, links).
  • Reading-time estimate added to article header and listing cards.
  • Hero image cards added with lazy-load and gradient fallback.
API v1.30.2permalink
Bug fixInformationalAPIAction required: No

Hotfix: news ingest was failing silently; all Reddit items were landing in the error bucket

After v1.30.0 shipped the news ingest cron, all 25 ingested items were being rejected because a timestamp was passed as a string rather than a datetime object. All items now ingest successfully.

Fixed in:
API v1.30.2
Components:
News pipeline
Show details ▾
  • News items now ingest correctly.
API v1.30.1permalink
Bug fixInformationalAPIAction required: No

Hotfix: news ingest cron was returning 401 on every scheduled run

The news ingest cron endpoint was not correctly configured as a cron route, causing every scheduled run to be rejected. No production runs were lost; the fix landed before the first scheduled trigger.

Fixed in:
API v1.30.1
Components:
News pipeline
Show details ▾
  • News ingest cron now runs on schedule.
API v1.30.0permalink
FeatureInformationalAPIAction required: No

In-tree news ingest cron replaces third-party scheduler that was silently not running

The original news ingest architecture used a third-party workflow scheduler that was found to silently fail to register cron jobs. News ingest is now handled by a native API cron endpoint running hourly. Deduplication prevents re-ingesting the same items across runs.

Fixed in:
API v1.30.0
Components:
News pipeline
Show details ▾
  • Hourly ingest from r/MachineLearning RSS feed, capped at 50 entries per cycle.
  • Duplicate items are silently skipped.
API v1.29.1permalink
Bug fixInformationalAPIAction required: No

Hotfix: public news read endpoints were incorrectly requiring authentication

News article listing, category, and individual article read endpoints were requiring authentication, making /news inaccessible to unauthenticated visitors. Read endpoints are now public; write/admin endpoints remain authenticated.

Fixed in:
API v1.29.1
Components:
News page
Show details ▾
  • GET /v1/news, /v1/news/categories, and /v1/news/{slug} are now publicly accessible.
  • Write and admin endpoints remain authenticated.
API v1.29.0 / Web v1.26.0permalink
FeatureInformationalAPIWebAction required: No

AI News Center: storage and read surface for the news feed

New /news public read routes and admin write endpoints ship the storage and read surface for an AI news feed. Articles can be submitted, edited, published, and DMCA-withdrawn. Public reads are unauthenticated for SEO.

Fixed in:
API v1.29.0 / Web v1.26.0
Components:
News page
Show details ▾
  • Public GET endpoints: /v1/news, /v1/news/{slug}, /v1/news/categories.
  • Admin write endpoints for submitting, editing, publishing, and withdrawing articles.
  • DMCA withdrawal support: withdrawn articles return 410 Gone.
  • Article JSON-LD structured data with canonical link to original source on individual article pages.
API v1.28.0 / Web v1.25.0permalink
FeatureInformationalAPIWebAction required: No

Resend bounce webhook, landing CTA analytics, and billing cost accuracy

Three improvements shipped together. Email bounces and complaints now automatically suppress future emails to the affected address. Landing page CTA clicks are now tracked for conversion analysis. A CI gate ensures future billing cost calculations route through the central cost model.

Fixed in:
API v1.28.0 / Web v1.25.0
Components:
Webhook delivery · Dashboard · Billing
Show details ▾
  • Resend bounce/complaint webhook: hard bounces and complaints automatically suppress future emails to the affected address, protecting sender reputation.
  • Landing page CTAs now emit analytics events: hero, sign-up, pricing, calculator, and docs click-through.
  • Billing cost calculations are now routed through a single central model, reducing drift across surfaces.
API v1.27.0permalink
FeatureInformationalAPIWebAction required: No

AI Benchmark Repository: community-standard schema (multi-GPU, Apple Silicon, ITL, speculative decoding)

The benchmark schema now matches the fields used by NVIDIA NIM, vLLM, MLPerf, and the Apple Silicon community, making submitted results directly comparable to numbers published elsewhere. New hardware-class filter tabs (NVIDIA CUDA / AMD ROCm / Apple Silicon / Intel Arc) let you find relevant results without scrolling.

Fixed in:
API v1.27.0
Components:
/benchmarks leaderboard · /benchmarks/submit wizard · /benchmarks/runs/:slug result page · POST /v1/benchmarks/runs · GET /v1/benchmarks/leaderboard
Show details ▾
  • Multi-GPU support: submit results for 1×4090, 2×4090 NVLink, or 8×H100 configs. gpu_count is now a first-class field so outlier detection partitions correctly per configuration.
  • Apple Silicon unified memory: a new memory_type field (discrete_vram / unified_memory / system_ram) gives MLX benchmarks a sensible slot; the M5 Max community benchmark vertical is now fully expressible.
  • Inter-Token Latency (ITL): the canonical generation-phase metric used by NVIDIA NIM, vLLM, BentoML, and AWS Neuron is now capturable alongside tokens/sec, enabling apples-to-apples comparisons with production serving benchmarks.
  • Speculative decoding and Flash Attention flags, perplexity dataset reference (WikiText-2 / PTB / C4 / ShareGPT), and typed runtime fields (cuda / rocm / metal / vulkan / openvino / cpu) added. 5 new diagnostic rules detect common performance pitfalls for ROCm, Apple Silicon, and EXL2 quants.
API v1.26.0permalink
FeatureInformationalAPIWebMCP GatewayAction required: No

AI Benchmark Repository: submit wizard, leaderboard, permalinks, diagnostics, and MCP tool

The complete benchmark surface is now live: a 3-step submit wizard, sortable leaderboard with 4 ranking lenses (tokens/sec · $/Mtok · tokens/sec/watt · value composite), shareable per-run permalinks with automated diagnostics, and a `submit_benchmark` MCP tool so agents can log results programmatically.

Fixed in:
API v1.26.0
Components:
/benchmarks/submit · /benchmarks leaderboard · /benchmarks/:modelSlug per-model page · /benchmarks/runs/:slug permalink · MCP `submit_benchmark` tool · POST /v1/benchmarks/runs · GET /v1/benchmarks/leaderboard · GET /v1/benchmarks/runs/:id_or_slug
Show details ▾
  • Submit wizard: 3-step flow, model / quant / context / batch → hardware autocomplete (supports paste from nvidia-smi -q) → headline metrics + software stack + agent-submission toggle. Cloudflare Turnstile protects anonymous submissions.
  • Leaderboard with 4 ranking lenses and verified badges: cyan = admin-verified, green = community-verified, grey = unverified, red = flagged. The 🤖 badge marks agent-submitted results.
  • Per-run permalink pages include a comparison strip (median / this run / top-10% bar chart with percentile pill), 8 automated diagnostic rules that explain likely causes of underperformance, and a one-click copy of the reproducibility recipe as YAML or cURL.
  • `submit_benchmark` MCP tool allows agents to log benchmark results directly from a CI pipeline or benchmark script. Returns the public permalink and outlier score immediately.
API v1.25.0permalink
FeatureInformationalAPIAction required: No

AI Benchmark Repository: foundation (schema, REST API, outlier detection)

The gotcontext.ai benchmark repository is now open for submissions. Log your inference runs (model, quant, hardware, context length, batch size, tokens/sec) and get a shareable permalink. Anonymous submissions are accepted alongside authenticated ones.

Fixed in:
API v1.25.0
Components:
POST /v1/benchmarks/runs · GET /v1/benchmarks/runs/:id_or_slug · GET /v1/benchmarks/leaderboard · POST /v1/benchmarks/runs/:id/flag · GET /v1/benchmarks/hardware
Show details ▾
  • Six REST endpoints: submit a run, fetch by ID or public slug, leaderboard with 4 ranking lenses, community flag (≥3 flags = flagged status), hardware SKU autocomplete.
  • Outlier detection runs on every submission: rolling p50 ± σ per (model, hardware) pair; outlier_score flags results that are >2σ from the median so you can investigate unusual numbers before sharing.
  • Anonymous submissions are accepted with rate limiting (5/hour per IP); authenticated gc_ key submissions get a higher limit (20/hour). Both receive the same permalink and outlier scoring.
API v1.23.20permalink
Bug fixMediumAPIAction required: No

Billing accuracy sweep: model-aware pricing across all savings surfaces

Savings figures are now consistent and model-accurate across every surface: the weekly digest email, the usage alert suffix in `/v1/usage`, and the per-compression `estimated_cost_saved` field. Customers running Claude Opus were seeing savings understated by up to 5×; Haiku users were seeing savings overstated by up to 3.75×. No customer action required. The fix applies to the next weekly digest and any new compressions.

Fixed in:
API v1.23.20
Components:
weekly digest email · /v1/usage alert suffix · /v1/compress estimated_cost_saved · Pro pricing copy in two email templates
Show details ▾
  • Weekly digest email now derives savings from the most-common model in your 7-day window (same formula as the `/v1/usage/by-model` endpoint), replacing a hardcoded $3/M flat rate.
  • /v1/usage alert suffix now uses the blended-fallback rate ($5/M) instead of always assuming Opus pricing, which was over-promising savings for non-Opus users.
  • /v1/compress `estimated_cost_saved` now delegates to the unified model pricing catalog; unknown models receive the blended fallback instead of null.
  • Two email templates updated from the outdated $29/mo Pro price to the current $49/mo.
API v1.23.18permalink
FeatureInformationalMCP GatewayAction required: No

MCP gateway: ?profile=core (7 tools, ~2K tokens) vs ?profile=full (142 tools)

Clients that only need compression, search, and memory can now connect to `https://api.gotcontext.ai/mcp?profile=core` and receive exactly 7 essential tools using ~2K tokens instead of ~38K. The default unparameterized URL is unchanged and continues to advertise the full 142-tool catalog.

Fixed in:
API v1.23.18
Components:
MCP Gateway · Claude Code plugin
Show details ▾
  • `?profile=core` returns 7 tools: ingest_context, read_skeleton, search_semantic, modulate_region, get_compression_presets, set_compression_profile, get_compression_profile.
  • The Claude Code plugin bundle now defaults to `?profile=core` for new installs, reducing context overhead. Existing installs continue to use the full URL unchanged.
  • Both profile endpoints are fully independent. A failure on one does not affect the other.
API v1.23.15 to v1.23.17permalink
ImprovementMediumMCP GatewayAPIAction required: No

MCP gateway hardening: schema accuracy, SSRF policy errors, and 142-tool coverage sweep

Three reliability improvements to the MCP gateway: the `gc_blast_radius` tool now correctly communicates that `focus_symbol` is required (previously the schema said optional but the underlying tool required it, causing confusing errors); SSRF-blocked requests now return a structured JSON error instead of a bare network message; a 142-tool end-to-end sweep confirmed every tool works as documented.

Affected:
MCP clients using `gc_blast_radius` without `focus_symbol` prior to API v1.23.15
Fixed in:
API v1.23.15
Components:
MCP `gc_blast_radius` tool · MCP `proxy_mcp_server` tool · MCP `check_budget` tool
Show details ▾
  • `gc_blast_radius`: `focus_symbol` is now correctly marked required in the tool schema. Agents that auto-construct calls from `tools/list` will receive a clear validation error instead of a wrapped error response when the field is omitted.
  • `proxy_mcp_server`: requests blocked by the outbound URL policy now return a structured JSON error (`{"error": "ssrf_policy_violation", "reason": "...", "host": "..."}`) so agents can distinguish policy blocks from transient network failures.
  • `check_budget`: the schema now rejects unknown fields with a validation error rather than silently ignoring them, so agents calling with unsupported parameters get immediate feedback.
API v1.23.9permalink
FeatureInformationalMCP GatewayAction required: No

Four new MCP tools for code context: agent capsule, edit plan, callers, context render

Four new Pro-tier MCP tools give agents structured context before making code changes: `gc_agent_capsule` summarises what to change and validates it, `gc_edit_plan` produces a machine-readable edit plan, `gc_callers` finds call sites for a symbol, and `gc_context_render` returns a ranked prompt-ready context bundle for a natural-language query.

Fixed in:
API v1.23.9
Components:
MCP `gc_agent_capsule` (new) · MCP `gc_edit_plan` (new) · MCP `gc_callers` (new) · MCP `gc_context_render` (new) · MCP `gc_blast_radius` (extended)
Show details ▾
  • `gc_agent_capsule`: call before any non-trivial code change. Returns primary targets, code snippets, validation commands, rollback metadata, and a confidence score.
  • `gc_edit_plan`: returns a machine-readable plan listing which files to modify and what to add or remove, alongside validation commands.
  • `gc_callers`: find every call site for a symbol and the test files most likely to be affected, lighter weight than a full blast-radius analysis.
  • `gc_blast_radius` gains 5 new optional parameters: render_profile (full / compact / llm), optimize_context, max_depth, max_files, max_render_chars. The `llm` render profile is designed for direct LLM consumption.
API v1.23.7 to v1.23.8permalink
Bug fixHighMCP GatewayAPIAction required: No

`gc_blast_radius` restored: tool was returning degraded responses for most callers

The `gc_blast_radius` MCP tool was returning a degraded error response for any caller who did not pass `focus_symbol` (which the schema incorrectly marked optional). This affected the majority of real-world uses. The tool now returns a clear, actionable error when `focus_symbol` is missing. Callers who were passing it correctly were unaffected.

Affected:
API v1.23.0 to v1.23.6 (gc_blast_radius callers omitting focus_symbol)
Fixed in:
API v1.23.8
Components:
MCP `gc_blast_radius` tool
Show details ▾
  • The `focus_symbol` parameter was required by the underlying implementation but the tool schema advertised it as optional. Calls without it received an opaque error response rather than a useful error message.
  • Fix: the tool now validates `focus_symbol` on entry and returns a clear error ("focus_symbol is required") when it is missing. The schema was updated to match.
  • Knowledge Hub audit-trail fidelity was also improved: API key identifiers are now captured alongside user IDs in Knowledge Hub write operations, keeping audit logs complete for API-key-authenticated sessions.
API v1.23.5 to v1.23.6permalink
Bug fixMediumWebAction required: No

French locale landing page and sign-up now render in French; billing checkout path fixed

The French-language site (`/fr/`) was displaying English copy despite `<html lang="fr">` being set. Every major landing page section (Hero, Navbar, Features, FAQ, CTA, Footer) and the sign-up page now render in French. Separately, the pricing page CTA (`/sign-up?plan=pro`) now correctly routes new users through sign-up into the Polar checkout. The `plan` parameter was previously dropped silently.

Fixed in:
API v1.23.6
Components:
/fr landing page · /fr/sign-up · /dashboard/billing upgrade CTA
Show details ▾
  • French translations wired across all LandingPage sections. Brand terms (MCP, gotcontext.ai, API key) kept in English; B2B copy uses formal "vous".
  • The sign-up page now forwards the `plan` query parameter through Clerk's redirect flow so users land on the billing page with an active checkout prompt.
  • Billing page: the `?upgraded=1&plan=pro` redirect from Clerk now shows a "Continue to Pro checkout" CTA that posts directly to the Polar checkout URL, closing the activation gap.
API v1.23.2permalink
Bug fixHighAPIAction required: No

Agent payment settlement status now flips correctly after payment verification

When an agent paid for a compression call via Nevermined or Skyfire, the payment was processed but the settlement status remained stuck at "pending" permanently. The reconciliation API now reflects settled payments correctly. This is an infrastructure fix; no end-user action is required.

Fixed in:
API v1.23.2
Components:
Agent payment processing · GET /v1/payments/reconciliation · /v1/compress (agent-payment-authenticated calls)
Show details ▾
  • The settlement status was not updating because the payment lookup relied on a value that was written asynchronously and was not yet available when the update ran.
  • Fix: settlement status lookup now retries up to 3 times to allow the async write to land, then marks the payment settled.
  • Observability: payment verification, scheduling, and retry-exhaustion events are now logged, with vendor and amount tracked (no wallet addresses or signing material logged).
API v1.27.1permalink
InternalInformationalAPIWebAction required: No

Public changelog now auto-synced: CI hard-fails when the page drifts behind CHANGELOG.md

A new CI gate ensures the customer-facing changelog at /changelog is updated with every release. The gate allows exactly one in-flight version (the time between writing a CHANGELOG entry and deploying the page update), but fails the deploy if two or more releases are missing. This release also backfills the public page with 10 entries covering API v1.23.2 through v1.27.0 that were missing.

Fixed in:
API v1.27.1
Components:
/changelog
Show details ▾
  • CI now fails if 2+ releases are missing from the public changelog.
  • Backfill: 10 customer-facing entries added covering versions from API v1.23.2 to v1.27.0.
API v1.23.19permalink
Bug fixMediumAPIWebAction required: No

Analytics savings figures now match the dashboard's top-keys widget

The per-project analytics summary was showing savings figures that did not match the "Top expensive keys" widget on the main dashboard. The two surfaces were using different formulas and different time windows. Both now use the same model-aware pricing and a consistent 30-day window by default.

Fixed in:
API v1.23.19
Components:
GET /v1/analytics/summary · /dashboard/analytics per-project savings · /dashboard Top expensive keys widget
Show details ▾
  • Analytics savings now use the same model-aware formula as the top-keys widget: the most common model in the selected window determines the per-token rate, falling back to the blended average for mixed-model usage.
  • A `days` query parameter was added to `/v1/analytics/summary` (1 to 365). The dashboard now passes `days=30` by default, matching the top-keys widget window. Omitting the parameter returns the lifetime aggregate (backward compatible).
  • An inline "Last 30 days" badge and tooltip were added to the analytics page so users know what window is displayed.
API v1.23.16 to v1.23.17permalink
ImprovementInformationalMCP GatewayAPIAction required: No

MCP tool schema honesty improvements and 142-tool end-to-end sweep CI gate

The `check_budget` tool now returns a validation error when called with unknown fields (it was previously silently ignoring them). Knowledge Hub MCP tools now explicitly document the requirement for a project-bound API key in their descriptions. A CI job runs the full 142-tool end-to-end sweep against live production after every deploy.

Fixed in:
API v1.23.17
Components:
MCP `check_budget` tool · MCP `gc_kb_*` tools (7 tools)
Show details ▾
  • `check_budget`: calling the tool with an unrecognized field like `{"period": "quarterly"}` now returns a clear error instead of silently ignoring the unknown field.
  • All 7 Knowledge Hub MCP tools now state in their descriptions that they require a project-bound `gc_` API key. Previously this was an opaque runtime surprise.
API v1.23.10permalink
InternalInformationalAPIAction required: No

Internal: CI test fix for Knowledge Hub SQLite compatibility, no customer-visible change

Three consecutive releases were blocked from deploying to production by a CI test failure in the Knowledge Hub test suite. Fixed by correctly skipping Postgres-specific tests when CI runs against SQLite. No customer-visible change.

Fixed in:
API v1.23.10
Components:
CI test suite
Show details ▾
  • Knowledge Hub tests that require Postgres-specific schema now correctly skip in the SQLite CI environment and continue to run in the integration environment against real Postgres.
Web v1.24.1permalink
ImprovementInformationalWebAction required: No

Quality sprint: dashboard accessibility, pricing rewrite, blog standardization

Four dashboard surfaces (Webhooks, Teams, Profiles, Admin) audited to 3/3 convergence for accessibility, focus management, and error semantics. The /pricing page was rewritten in two waves (ROI calculator, SLA matrix, sub-processors list, trust portal); a separate fix corrected the contact form rendering raw HTML. Every blog post now uses the same canonical layout (TOC, cite block, related links, contribute grid) and was scrubbed against an anti-AI-writing rubric.

Fixed in:
Web v1.24.1
Components:
/dashboard/webhooks · /dashboard/teams · /dashboard/profiles · /dashboard/admin · /pricing · /docs · /blog
Show details ▾
  • Dashboard accessibility: modal focus management, keyboard Escape handlers, live error announcements, and focus-visible rings added across Webhooks, Teams, Profiles, and Admin surfaces.
  • /pricing: ROI calculator, SLA matrix, sub-processors list, and trust-portal link added. A separate fix corrected the contact form rendering raw HTML.
  • /docs: the demo Run button was returning errors on the default sample text; fixed. Formatting issues in the Output Style and Sensitive-Content sections corrected.
  • Blog: all posts now use a consistent layout with an auto-generated table of contents, source citations, related-links sidebar, and contribute section. Prose was reviewed and edited across all posts.
  • Top navigation: the "Product" link in the global nav was using a bare `#platform` anchor that only worked from the landing page. Fixed to route correctly from any page; same fix applied to the footer Features link.
  • Dashboard profiles: a mismatch between the API's fidelity options and the dashboard's selector was corrected.
API v1.23.0permalink
FeatureInformationalAPIMCP GatewayAction required: No

Onboarding email drip + free-tier MCP context lookup tool

New users receive a 5-email onboarding drip over 14 days via Resend (feature-flag-gated against the existing welcome path so existing users are unaffected). Free-tier MCP keys can now see `gc_lookup` in `tools/list` (returns 501 stub pending the Phase 2 ingestion pipeline; behaviour will change to a working response without a version bump when Phase 2 ships).

Fixed in:
API v1.23.0
Components:
Email onboarding · MCP Gateway · Free tier
Show details ▾
  • Onboarding emails are scheduled across a 14-day window. The existing welcome email is unaffected.
  • `gc_lookup` MCP tool now appears in `tools/list` for free-tier keys. It currently returns a not-implemented response while the ingestion pipeline is in development; it will become fully functional without a version bump.
Web v1.24.0permalink
FeatureInformationalWebAction required: No

AI news feed and framework context hub

Two new pages on gotcontext.ai for AI context-engineering reference: `/news` (chronological feed of curated AI items across Models, Funding, Tools, Papers, Infrastructure, Agents, Policy) and `/context` (framework hub covering 9 frameworks: Next.js, FastAPI, LangChain, SQLAlchemy, Pydantic, Tailwind, Drizzle, FastMCP, React).

Fixed in:
Web v1.24.0
Components:
/news · /context
Show details ▾
  • `/news` ships with 28 hand-curated AI items at launch and is indexed in the global Cmd+K command palette.
  • `/context` framework pages mirror the same Cmd+K integration so each framework is reachable directly from the keyboard shortcut.
API v1.22.8permalink
Bug fixMediumAPIAction required: No

Budget alert delivery restored for users who re-enabled email alerts

Users who opted out of email alerts and then later re-enabled them were not receiving the 75 / 90 / 100 % project-budget threshold notifications. Fixed in API v1.22.8. No customer action required. The next budget-check tick after the upgrade will deliver the still-relevant alert.

Fixed in:
API v1.22.8
Components:
Project budgets · Email alerts
Show details ▾
  • When a user opted out of email alerts and later re-opted in, the system had already recorded the alert thresholds as delivered, so no further alerts were sent.
  • Fix: opting out no longer marks thresholds as delivered, so re-opting in will deliver any still-relevant alert at the next budget check.
API v1.22.7permalink
Bug fixHighAPIWebAction required: No

GET /v1/projects/{id}/usage returned 500

The per-project usage endpoint had been returning HTTP 500 in production. The dashboard's per-project usage tab and any direct API integration relying on this endpoint were affected. Fixed in API v1.22.7.

Fixed in:
API v1.22.7
Components:
/v1/projects/{id}/usage · per-project usage tab
Show details ▾
  • The per-model breakdown query failed at the database level due to a parameter-handling issue with identical default values.
  • Fix: the query is restructured to avoid the duplicate-parameter conflict.
API v1.22.7permalink
ImprovementLowAPIWebAction required: No

is_default field exposed on /v1/projects responses

The default-project marker is now returned by the API so client code can drive UI gating from server truth instead of inferring it from a project name. No breaking changes. Additive field.

Fixed in:
API v1.22.7
Components:
/v1/projects · dashboard project picker
Show details ▾
  • The dashboard's Delete-button gate previously inferred which project was the default by matching `name === "Default"`, a fragile string match.
  • API responses now include `is_default: boolean`. The dashboard reads this directly. Custom API integrations can also consume the field.
API v1.22.3permalink
Bug fixMediumMCP GatewayAction required: No

Removed 5 unimplemented MCP tool stubs from tools/list

Five MCP tools that appeared in `tools/list` had no implementation behind them. Calling them returned an error. They have been removed from the listing until the implementations land. Clients that enumerated and called these tools will see them stop appearing in `tools/list`; calls to them would have failed previously anyway.

Fixed in:
API v1.22.3
Components:
MCP `tools/list`
Show details ▾
  • The five tools were listed in discovery but had no working implementation behind them. Calling them returned an error. They have been removed until their implementations are ready.
Web v1.23.4permalink
ImprovementLowWebAction required: No

Usage badge now shown on each project in Dashboard

Each project card in the dashboard now displays a usage badge showing this month's API-call count, so users can see at a glance which projects are active without opening each one. No customer action required.

Fixed in:
Web v1.23.4
Components:
/dashboard/projects
Show details ▾
  • The badge reads from the same per-project rollup the dedicated usage tab uses, so the values match end-to-end.
API v1.22.5 + v1.22.4 + v1.22.2 + v1.22.1permalink
InternalInformationalAPIAction required: No

Internal: per-project FinOps surface hardening, no customer-visible change

Internal cleanup across the per-project FinOps surface (project budgets, per-project usage, project-bound API keys). No customer-visible API contract change. Bundled here for SemVer traceability.

Fixed in:
API v1.22.5
Components:
per-project FinOps internals
Show details ▾
  • Code-quality, internal-test, and refactor work. If any change affects the public API contract, it appears as its own first-class entry above.
Web v1.23.3permalink
InternalInformationalWebAction required: No

Internal: dashboard FinOps audit, no customer-visible change

Internal-only audit pass on the dashboard FinOps surface. No customer-visible UI or behavioural change. Bundled here for SemVer traceability.

Fixed in:
Web v1.23.3
Components:
dashboard FinOps internals

Security advisories · incidents · compliance history

1.66.20permalink
Security advisoryMediumAPIAction required: No

Accept-grant elevates to system before RLS-sensitive write

Preparing for RLS enablement: recording share acceptance now sets app.role=system for the accept UPDATE so it still works once policies are enforced.

Show details ▾
  • accept_grant elevates app.role mid-transaction before stamping accepted_at (0149 requires a service write, not a grantee UPDATE).
  • Does not flip RLS_GUC_ENABLED or change the production DB role; those remain CEO-gated (#514).
1.64.1permalink
Security advisoryMediumAPIAction required: No

Chat completions now has its own 60/min ceiling

POST /v1/chat/completions forwards each call to an upstream model provider on your own stored API key, so you are billed directly for it. It previously inherited the general per-plan request limit, which on the top tier allowed 500 calls a minute. It is now capped at 60 a minute -- one per second -- so a runaway loop or a leaked key costs far less before you notice. Normal interactive use is nowhere near this.

Show details ▾
  • The new ceiling applies only to POST /v1/chat/completions. Compression, knowledge and every other endpoint keep their existing per-plan limits.
  • Per-path ceilings can now only lower a limit, never raise one. Previously a path entry replaced the plan value outright, so an entry above your plan tier would have increased your allowance instead of capping it.
  • Responses continue to carry x-ratelimit-limit, x-ratelimit-remaining and x-ratelimit-reset, so a client can see the ceiling it is working against.
1.64.1permalink
Security advisoryMediumAPIAction required: No

Webhook signing secrets are now encrypted at rest

The secret your endpoint uses to verify the signature on our webhook deliveries is now encrypted in our database rather than stored as readable text. Nothing changes for you: the secret value itself is unchanged, so your existing verification keeps working and no reconfiguration is needed.

Show details ▾
  • New webhook secrets are encrypted before they are stored, using the same versioned key scheme already used for provider credentials.
  • The secret is still shown to you once, in full, when you create the webhook. It stays redacted everywhere else.
  • Delivery signatures are unchanged, so endpoints that already verify our signature continue to verify successfully.
1.62.0permalink
Security advisoryMediumAPIAction required: No

Signed A2A Agent Card for verifiable identity

Other AI agents that discover gotcontext through the Agent2Agent (A2A) protocol can now cryptographically verify that the Agent Card really came from gotcontext, before they trust or delegate to it. Our public Agent Card now carries a JWS signature that a standard A2A client can check against our published key.

Show details ▾
  • The Agent Card at the well-known A2A discovery path now includes a JWS signature (Ed25519) over the RFC 8785 canonical form of the card.
  • Verifiers can fetch the verification key from our published key set and reject a forged or tampered card.
  • The signature is additive and backward compatible: existing clients that ignore it keep working; self-hosted deployments without a signing key serve an unsigned card.
API v1.58.7permalink
Security advisoryHighMCP GatewayAction required: No

Restricted server-side-path tools on the hosted MCP service

A few Pro-tier MCP tools accept a server-side file path, which is only meaningful in a self-hosted deployment. On the hosted service they are now correctly hidden and blocked, since they do not apply there. Self-hosted deployments are unaffected and keep full access.

Show details ▾
  • Tools that take a server-side path are no longer discoverable or callable on the hosted MCP endpoint.
  • Added an automated release check so any future tool of this kind is caught before it ships.
  • Self-hosted operators keep these tools in full.
API v1.58.7permalink
Security advisoryHighAPIAction required: No

Upgraded a core web framework to clear published CVEs

Upgraded the API's underlying web framework to a new major version, clearing four high-severity published vulnerabilities, including authentication-bypass and request-forgery classes. No action is required on your side.

Show details ▾
  • Core web framework upgraded to its latest major release.
  • Four high-severity published vulnerabilities resolved.
  • No changes to your integration or request format.
API v1.58.7permalink
Security advisoryMediumAPIMCP GatewayAction required: No

Knowledge Base private items and sharing are now enforced

Items marked private are visible only to the API key that created them. Per-key sharing allowlists are enforced on every Knowledge Base operation: query, read, edit, delete, and diff, across both the MCP and REST surfaces.

Show details ▾
  • Private Knowledge Base items are accessible only to the API key that created them.
  • Sharing allowlists are checked on every operation (query, read, edit, delete, diff), not just on query.
  • Enforcement is consistent across the MCP gateway and the REST API.
Web v1.44.15permalink
Security advisoryMediumWebAction required: No

Web dependency security updates

Several transitive browser and server-runtime dependencies were updated to patched versions. No customer action is required.

Show details ▾
  • Updated affected transitive packages used by the web runtime and build toolchain.
  • Kept the update within compatible version ranges to avoid changing application behavior.
  • Hosted customers receive the fix automatically.
API v1.53.0permalink
Security advisoryHighAPIMCP GatewayAction required: No

Security and reliability fixes: filesystem filter, billing portal, cron cost, Docker pinning

Seven fixes from a proactive internal audit. The MCP search_code tool is now properly filtered in SaaS mode. Per-API-key tool restrictions now apply at discovery (tools/list) as well as dispatch. The billing portal returns a clear error instead of a misleading upgrade prompt when the database is briefly unavailable. GitHub Actions cron schedules were cut to reduce infrastructure cost. Docker base images are now digest-pinned for supply-chain stability. Hosted customers are auto-upgraded.

Show details ▾
  • The MCP search_code tool is now correctly restricted when running in hosted mode, preventing server-path access.
  • Per-API-key tool allowlists now filter tools/list (discovery) and tools/call (dispatch) consistently.
  • The billing portal returns a 503 with a clear message instead of a 404 "upgrade first" when the database is briefly unavailable.
  • The compression engine now rejects non-finite embeddings at ingest, preventing silent result corruption downstream.
  • Wire-shape contracts for the forum and social surfaces are now locked against future renames.
  • GitHub Actions cron schedules reduced by roughly 59% to cut infrastructure cost.
  • Docker base images are now digest-pinned so base-image changes arrive as reviewable pull requests.
API v1.52.3permalink
Security advisoryHighAPIMCP GatewayAction required: No

Security hardening: account deletion, billing, and webhook fixes

Five fixes from a proactive internal security audit. API keys are now revoked the moment their owner account is deleted; referral credits can only be earned once per referred user; the MCP proxy tool now blocks requests to internal network addresses; key revocation is reliable under concurrent requests; and usage-alert delivery is durable across server restarts. Hosted customers are auto-upgraded. No action required.

Show details ▾
  • Deleting an account now revokes all of its API keys before the account is removed.
  • Referral credit can only be earned once per referred user.
  • The MCP proxy tool no longer forwards requests to private or internal network addresses.
  • Key revocation is now reliable even under concurrent requests, so a revoked key is consistently rejected.
  • Usage-alert delivery is durable and is no longer dropped when a server instance restarts.
API v1.50.23permalink
Security advisoryMediumAPIAction required: No

Forum security: user silencing, safer username conflicts, link sanitization

Three forum hardening fixes: moderators can silence and unsilence users; username conflicts no longer reveal whether a name is already taken by another account; and unsafe links are stripped from comment content.

Show details ▾
  • Moderators can silence a user so they can no longer post comments, and reverse it.
  • Username conflicts are reported without revealing whether the name belongs to another account.
  • Unsafe links are stripped from comment content.
API v1.50.22permalink
Security advisoryMediumAPIAction required: No

Comment sanitizer hardened

The comment sanitizer was rebuilt to strip all HTML tags directly instead of relying on allowlisting, closing a class of HTML-entity edge cases and reducing the dependency surface.

Show details ▾
  • All HTML/XML tags are now stripped from comments; no HTML attributes survive.
  • Plain text and Markdown syntax is preserved.
API v1.50.16permalink
Security advisoryMediumAPIAction required: No

Payment-token audience enforcement

Skyfire payment tokens are now validated against the expected audience, so a token issued for a different service cannot be reused against this API. Agent payments remain off by default.

Show details ▾
  • Payment tokens whose audience does not match this service are rejected.
  • Operators enabling agent payments configure the expected audience as part of setup.
API v1.50.15permalink
Security advisoryHighAPIAction required: No

Secret encryption now fails closed in production

If the encryption key is not configured in production, secret-storage operations now fail safely instead of proceeding, preventing secrets from ever being written unencrypted. Local development behavior is unchanged.

Show details ▾
  • In production, a missing encryption key blocks the operation rather than storing unencrypted data.
  • Local development is unaffected for convenience.
  • Operators who rely on encryption should confirm the key is configured before deploying.
API v1.50.5 / Web v1.42.2permalink
Security advisoryLowAPIWebAction required: No

Hardened HTTP security-header baseline across the API and dashboard

Every API and dashboard response now carries a stronger set of browser security headers, defense-in-depth against clickjacking, MIME-type confusion, and referrer leakage. No customer action is required.

Show details ▾
  • Added X-Content-Type-Options (nosniff), X-Frame-Options (clickjacking protection), a stricter Referrer-Policy, and a Permissions-Policy denying unused device features.
  • Headers are only set when not already present, so nothing a route configures itself is overwritten.
  • A full Content-Security-Policy is being rolled out separately in report-only mode first, to avoid breaking sign-in or analytics.
  • No customer action is required.
API v1.50.4permalink
Security advisoryMediumAPIAction required: No

Per-plan request body-size limits now enforced reliably, including for streamed requests

Request body-size limits are now enforced reliably, including for streamed requests. Over-limit requests are rejected before any route handler processes the body.

Show details ▾
  • Identified through a proactive internal security audit and fixed server-side.
  • All upload styles (including streamed requests) are now subject to the same per-plan size limits.
  • Over-limit requests receive a deterministic 413 response before any route handler processes the body.
  • Within-limit uploads are unaffected.
  • No customer action is required.
Web v1.42.1permalink
Security advisoryMediumWebAction required: No

Dashboard notification rendering hardened against HTML injection

Notification links are now strictly escaped and URL-validated before rendering in the dashboard.

Show details ▾
  • Found through a proactive internal security audit; fixed in the rendering layer.
  • Notification links are now validated as http(s) URLs; invalid URLs render as plain text with no anchor element.
  • No customer action is required.
API v1.50.3permalink
Security advisoryHighAPIMCP GatewayAction required: No

Knowledge-base and tool access restrictions now fail closed on a database error

A database error during API key resolution could reset a key's knowledge-base and tool allowlists to unrestricted. Those restrictions now hold their seeded values when a database error occurs.

Show details ▾
  • Found through a proactive internal security audit as a follow-on to the v1.50.0 hardening.
  • Per-key knowledge-base and tool allowlists are now preserved correctly when a database error occurs during key resolution, rather than resetting to unrestricted.
  • Keys with no allowlist configured remain unrestricted. Existing behaviour is unchanged.
  • No customer action is required.
API v1.50.2permalink
Security advisoryMediumAPIAction required: No

GitHub tokens and webhook secrets now encrypted at rest

GitHub personal access tokens and webhook secrets stored for the GitHub integration were previously held as plaintext in the database. They are now encrypted with a server-side key; existing values are transparently upgraded.

Show details ▾
  • Found through a proactive internal security audit and fixed server-side.
  • Integration secrets are now stored as encrypted ciphertext; a database read or backup exposes ciphertext only.
  • Existing plaintext values were re-encrypted during the deployment. No manual step required.
  • Secret encryption now fails closed in production: if the encryption key is not configured, secret-storage operations fail safely instead of proceeding unencrypted.
  • No customer action is required.
API v1.50.1permalink
Security advisoryMediumAPIAction required: No

Outbound webhook URLs validated against internal-network access

User-configured webhook delivery URLs were not validated against internal network ranges, allowing delivery to private or cloud-metadata addresses. Webhook URLs are now checked at creation and re-validated immediately before each delivery.

Show details ▾
  • Found through a proactive internal security audit and fixed server-side.
  • Webhook creation now rejects URLs that resolve to private, loopback, link-local, or cloud-metadata addresses.
  • The delivery path re-validates the target address immediately before each outbound request.
  • HTTP redirects are no longer followed during delivery.
  • No customer action is required.
API v1.50.0permalink
Security advisoryHighAPIMCP GatewayAction required: No

Scoped API keys now strictly enforced; destructive-action confirmation locked to dashboard sign-in

Scoped API keys were accepted by the server but their scope constraints were not persisted or enforced. Every scoped key silently ran with full access. Scope restrictions are now applied end-to-end. Separately, the confirmation gate for destructive key operations now requires an active dashboard session.

Show details ▾
  • Found through a proactive internal security audit and fixed server-side.
  • Scope restrictions are now stored and enforced on every request. Previously they were accepted at creation but not applied.
  • Existing keys without explicit scopes are treated as legacy full-access keys. No behaviour change for current users.
  • A temporary backend outage during key resolution no longer causes a scoped key to fall back to full access.
  • The confirmation gate for destructive key operations now requires an active dashboard session.
  • No customer action is required.
API v1.45.xpermalink
Security advisoryMediumAPIAction required: No

Analytics CSV export hardened against spreadsheet formula injection

CSV cells beginning with formula-trigger characters (=, +, -, @) are now neutralized so exported files cannot execute formulas when opened in Excel or Google Sheets.

Show details ▾
  • Identified through a proactive internal security review and fixed server-side.
  • Cells that start with =, +, -, or @ are prefixed with a tab character before export, following standard CSV injection mitigation practice.
  • Numeric and date values are unaffected.
  • No customer action is required.
API v1.35.0permalink
Security advisoryHighAPIMCP GatewayAction required: No

Live key revocation across all API servers + outbound URL hardening

Revoked gc_ API keys are now invalidated promptly and reliably across all API servers. Separately, the document-fetch and Knowledge Hub ingest paths now block requests to private or internal network addresses across all known address encoding variants.

Fixed in:
API v1.35.0
Components:
API key lifecycle · MCP Gateway
Show details ▾
  • Revoked API keys are now invalidated promptly across all API servers. Revocation no longer requires waiting for a cache TTL to expire.
  • Server restarts no longer cause revocation events to be missed.
  • The document-fetch and Knowledge Hub ingest paths now block requests to private or internal network addresses.
  • Pairs with the v1.34.36 hotfix (cache-invalidation gap in the key confirmation flow) shipped the same day.
API v1.34.36permalink
Security advisoryHighAPIAction required: No

P0 hotfix: revoked confirm-tokens now invalidated promptly across all servers

A revoked key issued through the key-confirmation flow was not immediately invalidated in the shared cache, allowing it to continue authenticating on peer servers until the cache refreshed. The fix invalidates the cache immediately after revoking the key in the database.

Affected:
API v1.34.35
Fixed in:
API v1.34.36
Components:
API key lifecycle
Show details ▾
  • Cache invalidation is best-effort: a cache failure is logged and does not surface as an error to the caller.
Incident · resolved in API v1.23.12026-05-09 17:14 to 17:24 UTC (10 minutes)permalink
IncidentCriticalMCP GatewayAction required: No

MCP tools returned 500 for ~10 minutes

All MCP tool calls failed with HTTP 500 for approximately 10 minutes. No data was lost. Customers using MCP clients (Claude Code, Cursor, Codex CLI, Gemini CLI) saw tool calls fail and could retry after the window closed.

Affected:
API v1.22.4 to v1.23.0
Fixed in:
API v1.23.1
Components:
MCP Gateway · tools/call dispatch
Show details ▾
  • A routing change caused every tool call to reach a code path with a reference that had never existed. The defect was dormant in a prior release but only became reachable after the routing change landed.
  • Resolution: the broken reference was removed and deployed as API v1.23.1.
  • Hardening: automated checks were added to catch this entire class of defect before it ships.
Compliance notice · resolved in API v1.23.1permalink
Compliance noticeHighAPIAction required: No

Unsubscribe endpoint returned 401 for all requests

Between API v1.23.0 and v1.23.1, the `/v1/unsubscribe` endpoint (used for the CAN-SPAM/GDPR-required unsubscribe link in transactional emails) returned 401 Unauthorized for all requests. No unsubscribe records were lost. The endpoint returned a non-200 to clients, which retried or surfaced the error. No customer action required.

Affected:
API v1.23.0
Fixed in:
API v1.23.1
Components:
API · /v1/unsubscribe · transactional email footer
Show details ▾
  • The endpoint now correctly accepts unauthenticated requests as required for the unsubscribe use case.
  • No personal data was processed during the regression window. All requests during the window returned an explicit 401; retrying the unsubscribe link resolves the original opt-out.
Security advisory · resolved in API v1.22.6permalink
Security advisoryHighAPIMCP GatewayAction required: Yes

SSRF: outbound URL fetch paths now block requests to private and internal network addresses

Outbound URL fetches (used by webhook delivery, KB document ingestion, and a small number of MCP tools) could be tricked into reaching loopback or private addresses through address encoding techniques. The webhook/document-fetch paths now block requests to private or internal network addresses. Hosted customers received the fix automatically; self-hosted operators should upgrade to API ≥ v1.22.6.

Action required

Self-hosted operators: upgrade the API container to v1.22.6 or newer. No action required for customers on the hosted gotcontext.ai service.

Affected:
API ≤ v1.22.5
Fixed in:
API v1.22.6
CVE:
CVE pending assignment
CVSS:
7.5 (High), CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
Components:
Webhook delivery · Knowledge Hub
Show details ▾
  • All outbound URL fetch paths now enforce private/internal network blocking at both validation time and connection time.
  • No active exploitation was observed in production traffic. The advisory is published preemptively.

Older releases are listed above on this page. Follow release announcements on GitHub for change notifications. Security advisories, incidents, and compliance notices are filed on this page; use the filters above to narrow by surface or type.

Citing a specific change? Use the permalink on each entry (/changelog#<entry-id>). To get notified when a security advisory or breaking change ships, subscribe via the Atom feed or create an account for email notifications.