
What’s new — features, improvements and fixes.
Every release bundles features, improvements, and fixes that ship to everyone in the organisation. The newest release is at the top.
When a new extension version is ready, you’ll see a notice with an Update button — install whenever suits you. If you ignore it, the extension quietly upgrades itself the next time your computer is idle.
“Search finally looks inside your conversations, your workspaces, agents and models are one SSH away, and your workflows get a proper home.”
ssh <kind>:<id>@ssh.frontiersin.io:ssh workspace:<workspace-id>@ssh.frontiersin.io drops you into the same sandbox your assistant uses (files, packages, secrets all there). A paused workspace resumes automatically, and you can run one-off commands too: ssh workspace:<id>@… 'ls -la'. Needs editor access.ssh agent:<agent-identifier>@ssh.frontiersin.io opens an interactive conversation right in your terminal — or pipe a one-shot prompt for scripts: ssh agent:<id>@… 'summarize the Q3 report'.ssh model:<model-identifier>@ssh.frontiersin.io, the same REPL without an agent’s instructions or tools./new, /help and /exit, with Ctrl-C to interrupt a reply. Add a labelled key (paste your ~/.ssh/id_ed25519.pub), see its fingerprint and last-used time, and remove it anytime — public keys only, we never ask for your private key. The same page also lists the connected accounts you sign in with.{ai} snippets expanding in any native app — Outlook, Teams, Word, Slack, your IDE) is no longer Windows-only. The macOS build is signed, notarized and auto-updating, so once you’re on it new versions install themselves. Grab it and see what’s supported under Settings > Desktop.“Projects grow into a proper workspace — shared knowledge, memory and instructions behind every thread — and a Catalog to see everything the organisation is building.”
“Talk back to the things the assistant builds, give your commands a real filing cabinet, and a couple of sharp edges filed down.”
:fc) at different commands, and you can rebind a shared command to your own alias when its acronym is already taken in your list.format option on a {formdate} field now actually applies, and {=today()} takes an optional format too. Mix tokens like YYYY, YY, MM, DD, MMM, HH and mm — so {formdate: name=when; format=YYMMDD} renders 260714 and {=today("DD/MM/YYYY")} gives 14/07/2026. Previously the format was ignored and every date came out as YYYY-MM-DD./home/user) would have hidden the sandbox’s own files. That path is now rejected with a clear inline error, so a mount can’t accidentally shadow your working directory.“Your workspaces get a proper control room — persistent volumes, your own secrets, hands-on thread management, and a feedback lens on who’s shaping the product.”
KEY=VALUE secrets that are injected as environment variables into every workspace you run — so anything the assistant runs (Python, the shell tool, dev servers) can read them via os.environ["MY_KEY"] or $MY_KEY. They’re per-user, encrypted at rest and write-only (you see a name, never the value), and names reserved by built-in connections (e.g. OPENAI_API_KEY) are rejected so a secret can’t shadow one. Changes apply on the next tool call in each active workspace.gpt-5.6-luna, GPT-5.6 Terra on gpt-5.6-terra, and GPT-5.6 Sol on gpt-5.6-sol. All three now expose the full reasoning-effort range — none, low, medium, high, xhigh and the new max — with Luna gaining a reasoning-effort selector for the first time. Same picker entries, same cost tiers, same image / PDF / inline-file support — no action needed on your side.“A quick follow-up to the big 2.11 drop — a home for your projects, threads and artifacts, notifications you can tune (with tasks landing in them), a full activity trail on every task, workflows that pause for a human, and a batch of fixes.”
serve_artifact) now have somewhere to live. A new Artifacts tab in the extension sidebar lists everything you’ve served — click any one to reopen it — and Settings > Artifacts gives you the full view: search by title or path, see the thread each came from and how many times it’s been opened. There’s nothing to create here — artifacts appear automatically the moment an agent serves one.“FrontiersOS grows up — tasks you can approve, track and hand off, live everywhere you work, plus agents you build just by asking.”
Calendars.ReadWrite, Calendars.ReadWrite.Shared and Files.ReadWrite.All), so it can actually book, move and cancel meetings and save files back to SharePoint/OneDrive rather than just read them. Already connected? Reconnect Microsoft in Settings > Credentials to grant the new access.obra/superpowers), a set of engineering & workflow skills — alongside K-Dense and Anthropic, plus a curated list of more libraries worth exploring for inspiration.author field), with headline counts of skills and builders. Click anyone to expand the skills they’ve written — each links straight to its page.“See exactly which skills the assistant is leaning on — and jump straight to any of them.”
#<skill-name>, #pr-<number> or #domain-<prefix> and it jumps you straight there.“Open the assistant already knowing where you are — and a simpler way to hand off a task.”
“Publish your best agents to the whole org — and Claude Sonnet moves to Sonnet 5.”
@sonnet shortcut and everything Auto routes to Sonnet) now runs claude-sonnet-5 under the hood, up from Sonnet 4.6. Same picker entry, same $$ cost tier, same image / PDF / inline-file support, and the same Extended thinking toggle — just a sharper, more capable model doing the work. No action needed on your side: existing threads pinned to Sonnet, automations, subagents, and the Auto router all pick it up automatically on their next turn.“Pull attendance and transcripts straight from your Teams meetings.”
“See who’s building agents, rate them, and pick the right image engine.”
generate_image and edit_image are no longer tied to a single model. The assistant now chooses the right engine for the job — Nano Banana Pro (Gemini 3 Pro) for the highest quality and for images with real text in them, Nano Banana 2 (Gemini 3.1 Flash) for quick iterations, and Imagen 4.0 / Ultra / Fast for photoreal stills — and the extension now shows which engine produced each image. Editing still runs on the Gemini engines, since Imagen can’t modify existing images.“Connect Jira and Confluence with one click — OAuth lands, and Jira Cloud joins the party.”
“Test-drive a proposed skill before it merges — straight from the review screen.”
· PR #N so you always know you’re driving a not-yet-merged proposal rather than the live version.“The assistant can drive your browser tab now — not just website widgets.”
emit_host_event({ name: 'scroll_to_contact' }) for pure DOM side effects, no return value.request_host_event({ name: 'read_page' }) asks the page a question; your handler calls reply(payload) and the assistant uses the answer in its next turn (first reply wins).processPrompt-driven conversations, and they’re delivered to whichever tab is active when the event fires.AssistantGPT('on', 'event', (name, data, reply) => …). Enable the tool per agent in Settings > Agents./ palette with the new Thinking: On / Off action. Opus thinks by default; Sonnet stays off until you ask for it.“Roles, groups and a permission catalog. The plumbing for who-can-do-what is in.”
“It remembers you now. Set a goal and walk away. Pull a teammate into the thread.”
goal_complete signal to halt — no babysitting, no "are you sure?" prompts mid-run./ command palette ⌨️ — type / at the start of the composer and a searchable palette of chat actions drops in: New chat, Clear chat, Stop generating, switch Models or Agents (jumps straight to the right tab of the Cmd/Ctrl+K picker), switch to Plan / Agent / Goal, set reasoning effort, toggle any tool on or off, Read page / Screenshot (on the platform sidebar), open Capabilities / Personalization / Status / Credentials, Send feedback, and Compact memory. Everything you used to hunt for in a menu is now one keystroke and a filter away — and the list adapts to the active model’s real capabilities. Picking a skill from the palette also preloads it straight into the workspace so the assistant skips the fetch round-trip.curl POST anything to it and the automation runs. The request body is piped into your prompt as {=webhook_body}, and JSON fields are addressable as {=webhook_json.fieldName}./ palette) lets you summarise older messages and reclaim context whenever a long thread starts to feel heavy — instead of waiting for the automatic compaction to kick in. The “Memory compacted” badge updates live the moment it runs.“Widgets grew hands. They take files, drive your page, and tap visitors on the shoulder.”
emit_host_event({ name: 'show_pricing' }) → your handler scrolls. Same wiring works for prefilling forms (prefill_submission), opening modals, switching tabs, adding to a cart, anything. Subscribe with AssistantGPT('on', 'event', (name, data) => …). Enable the tool per agent in Settings > Agents.request_host_event({ name: 'read_cart' }). The host's handler picks up a third reply(payload) argument and the agent uses the returned value in its next turn. Cart contents, the visitor's logged-in role, the current saved-articles list, a half-completed form — anything the page knows that the chat needs. 10s default timeout, Redis pub/sub on the server so it works across replicas.AssistantGPT('nudge', { message, delay_ms, prefill }) pops a small white speech bubble above the launcher FAB after a delay. Click the bubble → the chat opens with the (optional) prefill question pre-typed in the composer, ready to send. Click the × → it tucks away and stays dismissed for the rest of the browser session (per widget, in sessionStorage). Intercom-style proactive outreach without an extra service.AssistantGPT.processPrompt(...) now see a full three-event stream that mirrors AI SDK v5's part naming: 'text-start' (once at the open of a turn), 'text-delta' (per token), and 'text-end' (once when the turn completes — cleanly or on error). All three carry { id } so you can correlate against the originating call. Useful for flipping a "typing…" indicator next to your own UI, locking a form while the assistant is responding, or timing response latencies for analytics — without having to debounce on the delta stream. Wired up live on the extension JSAPI demo (the transcript card's status badge flips between idle and typing…).allowed_origins list now means "no host can embed this widget" instead of the previous "allow any host". A new explicit * token opts into wildcard mode if you really want it (use sparingly — typically dev only). Subdomain wildcards (*.acme.com) keep working as before. Existing widgets are unchanged; new ones default to fail-closed so an accidentally-published key can't be embedded anywhere until you add an origin.“Stream many threads at once. Plus shared team mailboxes.”
⏳ (N) badge in the tab title when other threads are still working, so a quick glance at your tab strip tells you what’s cooking even when that tab isn’t focused.accounts.receivable@frontiersin.org).send_email now always sends from the assistant’s generic FrontonGPT sender — ideal for notifications and system messages where the sender identity doesn’t matter. When a message needs to come from a real person or team mailbox, the assistant reaches for the new Mail tool instead. Tighter tool instructions mean it picks the right one without you having to spell it out./organisations/…/threads/…) now sets the browser tab title to the conversation name instead of the static FrontonGPT. Running four or five threads in parallel? ⌘+1-style tab-switching now lands you on the right one. The extension's standalone Open in tab view already did this — the web threads page just caught up.Suggested by3/12-style counter showing where you are. Each "turn" is one of your user messages — quick way to jump back to "the question I asked four turns ago about the SQL join" without scrolling by eye. Counter advances as you scroll naturally, too.Suggested byautomations_* tools (no per-user credentials, no sandbox needed). "Talk to n8n directly" requests use the workspace env vars; if those aren't set, the assistant now tells you to connect n8n in Settings > Credentials and offers to do the edit via automations_update instead if that was what you wanted.Suggested bytool_use block but no matching tool_result. The very next message you tried to send 400d the provider with "Tool result is missing for tool call toolu_vrtx_…" and the conversation was dead until you forked or started a new thread. Three-part fix landing in one go:output-error: cancelled with a sanitizer-cancelled marker before the row ever hits the DB. No more poisoned messages going forward.tool_use parts has been rewritten in place to the new terminal shape. Every previously-stuck chat that's still in scope is unblocked — try it.automations tool and (b) automations_update was owner-only so the runner wouldn't have been allowed to use it anyway. Both fixed: the runner can now edit itself (and only itself — it can't pivot to edit other automations). Same goes for rename, prompt edits, schedule changes, enabling/disabling, model swaps.Suggested byrunId-N per iteration), so iterate-and-test loops actually iterate.Suggested by“Smarter routing, a Desktop app that stays out of your way, and the keys to the publishing platform.”
:rv-thanks in Outlook, Teams, Word, Salesforce or your IDE and it expands in place into the full saved snippet — so the canned replies, boilerplate, signatures, acronyms to expand, standard phrasings, and other repeated text your team relies on stop living in a doc you copy-paste from. Author and edit them in the web app; the desktop app syncs and fires them globally.@opus) any time you want to override the choice.“Plan mode: see the plan before it drops a database.”
OWNER_NAME / OWNER_EMAIL / OWNER_ROLE and the matching USER_* set. Apps and scripts the assistant builds can greet you by name, stamp your details onto a document, or branch on your role without you pasting any of it in. On a shared thread the USER_* values reflect whoever is actually chatting. Update your name, role, or photo in Settings > Profile and the running workspace picks the change up within about a second.gh command-line tool preinstalled. If you've connected GitHub in Settings > Credentials, it's already authenticated (your token lands in GITHUB_TOKEN), so the assistant can open and review PRs, read issues, inspect CI runs, or clone a private repo straight from sandboxed code — no manual login step.InvalidAuthenticationToken errors it couldn't recover from until the cache aged out — or until you destroyed and rebuilt the workspace. The cache is now cleared the moment you save a new connection (and the same applies to your profile name, role, and photo).“Your suggestions wrote this release. (And the next four. We're catching up.)”
.txt download are right next to it.claude-opus-4.8 instead of claude-opus-4.7. Same picker entry, same $$$ cost tier, same context window, same tool support — Anthropic's newest flagship under the hood, with sharper reasoning on long, multi-step work and more reliable tool sequencing. No action needed on your side: existing threads pinned to Opus, the @opus shortcut, the Auto router's premium escalations, and every agent built on Opus pick it up automatically on the next turn.chrome://extensions so you can force a refresh from there. Built for users whose corporate Chrome / Edge policy holds back auto-update for days at a time — you no longer have to find out from a colleague that you've been running a stale build.Suggested byFREQ=WEEKLY;INTERVAL=2 rule — the scheduler already supported it, the helper just wasn't demonstrating it to itself.Suggested byCmd+Shift+O (or Ctrl+Shift+O) now creates a new thread and moves the caret straight into the composer so you can start typing immediately. Same fix applies to the "+ New thread" button at the top of the sidebar and the per-project ones, so every entry point behaves the same.Suggested byAAnonymoustrue, and members whose toggle was silently false from the bug have been switched back on. The toggle in Settings > Extension still lets you turn it off if you prefer.Suggested by“SkillsOps. Vlad got buried in your skill suggestions. He built his way out.”
README, grouped with skill counts, owner attribution, and an "unassigned" bucket for skills whose name prefix doesn't match any registered domain.“Built the scoreboard ourselves. Now we have to win on it.”
/api/v1/health endpoint from outside the cluster. Exercises the full user path — DNS, LB, ingress, TLS, app — not just the in-process handler. Response time over 3s flips the day to degraded; non-2xx or timeout flips it to outage.echo ok via envd, then kill it. Validates the full control-plane round-trip including container start. Slow probes (>20s) flag the cluster as degraded; failures as outage.“We changed one digit. You'll notice.”
gemini-3.5-flash instead of gemini-2.5-flash. Same picker entry, same $ cost tier, same 1M-token context window, same image / PDF / inline-file support — just the newer, sharper model under the hood. No action needed on your side: existing threads pinned to Gemini Flash, automations, and @flash shortcuts all pick it up automatically on the next turn.“Skills, on by default. Like they always should have been.”
skills/. Everything is in version control, peer-reviewed via PRs, and auditable.main flow through automatically. The commit shown on the Skills page reflects what's live in the assistant right now — no manual deploy, no waiting for the next release.skills into each model's effective default tools only for models whose own allowlist already permits it — i.e. Auto, Sonnet, Opus, and the other tool-calling families. GPT, Gemini, and standalone Haiku stay untouched, so no model gets handed a tool it can't reliably use.options_skills_tool_enabled). Flip it off and Skills stops getting auto-enabled on every new thread; flip it back on and the next picker refresh restores the behaviour. Per-thread overrides from the composer's tools menu still win — the toggle only governs the default.“Persistent volumes — shipped persistently. (Twice. Sorry about Wednesday.)”
“Search by vibe, powered by math. (We finally stopped pretending grep was enough.)”
articles, ~126K researcher profiles, ~58K Research Topics, ~2.1K taxonomy labels, and a dedicated ~2.7M researcher insights index for high-recall reviewer / topic-editor shortlisting.PINECONE_API_KEY (read-only) is in every sandbox's env, the pinecone Python package is pre-installed, and the assistant's system prompt knows the catalog so it picks the right index, model, and namespace without you spelling it out.“The Teams bot has been faking it for months. We finally caught it.”
/new, /reset, or /clear to start over — the live thread is archived and the next message starts fresh. The bot confirms with "Started a new conversation."image.generate), exports a workspace file (export_file), or generates a QR code, Teams shows the actual image or download link directly in the message — no Auth0 login round-trip, no broken-image placeholder. Behind the scenes the Auth0-protected file URL is swapped for a 7-day pre-signed S3 URL just before the reply lands in Teams, so Microsoft's image proxy can fetch it anonymously. Live artifact / app wrappers (serve_artifact / serve_app) still prompt a one-time Microsoft sign-in per browser — they iframe a live sandbox tied to your member identity, so we keep the auth gate there.“Analytics that finally answer the question you actually have.”
tool_use block and no matching result. Every subsequent retry then errored with "Tool result is missing for tool call toolu_…" and the thread was effectively dead until you forked or started a new one. The server now detects orphan tool calls when building the next prompt and synthesises a clean "that call didn't finish" result on the fly, so the next message you send picks the conversation right back up — no fork, no DB surgery, no lost context.“Click more. Type less. Delegate everything.”
send_email only goes to SES after explicit confirmation, invites only leave the chat when you hit add-to-calendar, checklist ticks stay local. Propose, review, ship — without ever copy-pasting out of a reply.delegate_task calls in parallel, or set run_in_background: true and resync later via the new subagent_await. Readonly mode and per-run model overrides ship too.↑↓ / ↵ nav, ⌘⇧O starts a new thread, ⌘⇧U reads the current page. Pick something and focus bounces straight back into the textarea — mouse optional from the first keystroke to the send.“Scaling up was easy. Scaling down took six months.”
“Power-user polish. Plus one more workspace apology, while we're here.”
ocean-breeze-tier-* projects in one searchable list, click a dataset for a drawer with its description (rendered as markdown), tables with real row + byte counts, and click any table to see its full column schema — including nested RECORD fields, partitioning, and clustering. Copy-FQN on every row. Read-only, org-shared, cached for 6 hours so it's instant after the first load.project_uid on the local thread and forwards it with the first completion request, so the thread row is born already grouped under the project rather than briefly appearing outside it and then hopping in.⌘ + number tab-jump and Chrome's tab search land you on the right thread instantly instead of cycling through "AssistantGPT • AI Assistant" × 6.Note: During the scaling work, some running workspaces were lost and cannot be recovered. If your workspace is missing files from a previous session, please start a fresh thread — we apologise for the disruption.
“Salesforce. Now blamable directly on you.”
SELECT. Cannot create, update, or delete records, by design. The credentials row shows "Using shared" so the state is never ambiguous.SALESFORCE_ACCESS_TOKEN and SALESFORCE_INSTANCE_URL with a fresh token, so simple-salesforce and plain requests calls just work — no token juggling. The tool path (salesforce_soql_query) and the sandbox env vars always agree on the active identity.“Your own elephant. Your own cloud. Try not to wreck them.”
pd.read_csv every time.PGHOST / PGUSER / PGPASSWORD env vars plus a full DATABASE_URL are exposed in every workspace. psycopg, sqlalchemy, and pandas.read_sql all pick them up with zero setup. Tell the assistant to "save these rows to my Postgres" and it just works.vector for pgvector embeddings (cosine / L2 / inner-product search over OpenAI/Anthropic vectors), pgcrypto for gen_random_uuid() + bytea hashing, citext for case-insensitive text columns, pg_trgm for fuzzy text search (% / similarity() + GIN indexes), and unaccent for accent-insensitive matching on non-ASCII text. Core Postgres already provides tsvector/tsquery full-text search and jsonb key/value storage, so no extension is needed for those. Heavy or sensitive extensions (PostGIS, FDWs, untrusted PLs) are deliberately left out.DATABASE_URL keeps pointing at it — no reconfig.psql, DBeaver, TablePlus, Metabase, or your favourite BI tool. Rate-limited to once a minute per member.eu-west-1 by default) and the workspace sandbox gets the standard AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / AWS_REGION env vars set automatically. boto3 is pre-installed, so "list my S3 buckets", "query this Athena table", or "invoke this Bedrock model" all work out of the box. Long-lived IAM user access keys only for now — proper sts:AssumeRole / session-credential support is on the roadmap.“Dashboards that wake themselves up. (Unlike everyone before noon.)”
serve_artifact (interactive dashboards, DuckDB-wasm apps, static HTML) used to point straight at your sandbox — which meant the moment it idled off (~1h), the link errored out until someone manually woke the workspace. Fine for you; confusing for anyone you shared the link with. That era is over:“Auto-router. Cost guardrails. Caveman fluency. We finally noticed your bill.”
→ arrows. One word per idea where possible.@alias ⚡ — type a short alias at the start of a message (e.g. @opus design a provably zero-downtime rebalance plan for our 5-shard orders table, flagging every invariant it would violate, @haiku tl;dr this, @flash summarise) to route that turn to the aliased model without opening the picker. The alias is stripped from what actually gets sent, so the model sees just your prompt. Choose how it behaves in Settings > Extension > Model commands behavior:@xxx pills next to each model in the picker so they're always discoverable.pd.read_excel, pd.read_csv, pdfplumber, …) — so big files land in the right tool for the job and the rest of the thread stays snappy./ty or /followup in any text field on any website — Gmail, Slack, Jira, LinkedIn — and it expands into the full message. Stop re-typing the same replies, signatures, and boilerplate.