Changelog
What changed in each desktop release. The app shows the same notes after it updates.
v0.14.19 — Remote workspace reliability
Bug Fixes
- Remote workspace reliability — Pending approvals recover after reconnecting and clear when an agent restarts. Compaction controls display settings confirmed by the workspace's server and explain when settings are unavailable.
Improvements
- Internal Machines beta — Fleet health, session overview and remote notifications are available for internal testing. The beta remains disabled by default while real-machine parity checks continue.
v0.14.18 — Know when updates can't install
Improvements
- If Fabric Agents can't install updates where it is installed, Settings › App and a notice say so and how to fix it, instead of the update silently never installing. This happens for accounts without administrator rights when the app is in the system Applications folder, when macOS runs the app from a temporary read-only copy, or when it runs straight from the disk image.
Notes
- To get updates without administrator rights on a Mac, keep Fabric Agents in the Applications folder inside your home folder (create the folder if it isn't there). Updates then install by themselves on restart.
v0.14.17 — Progress updates while the agent works, and automatic resume after failures
Improvements
- Ask "What is going on?" (or "Are you still working?", "How close are you?") while the agent is busy, for example while subagents or a long command run, and you get a short progress update under your message right away, written from what the agent has done so far. The agent still reads your message and replies at its next step. Messages that are not about progress, such as a correction, get no update.
- When a turn fails because the AI service is overloaded, unreachable or rate limited, the session now resumes by itself: up to 3 times, after 10 seconds, 1 minute and 3 minutes, with a note under the error saying when. Sending a message cancels it. Failures that need you, such as an exhausted quota, a billing problem, a sign-in or an invalid request, are not retried.
Bug Fixes
- Small helper requests (titles, summaries, progress updates) can no longer run tools.
v0.14.16 — Messages sent while subagents work get answered
Bug Fixes
- A message you send while the agent is busy with subagents now reaches the main agent, which answers it. Before, it could be handed to a running subagent instead, so questions like "What is going on?" went unanswered. The agent reads your message at its next step, so while subagents are still working the reply comes when they finish; press Stop if you need an answer right away.
v0.14.15 — Reliability fixes for long agent runs
Improvements
- Fabric keeps your Mac awake while agents work, including background tasks and subagents that keep running after a reply. Turn on Settings › App › Keep screen awake to keep the display on too.
- Fabric feels faster: streamed replies no longer redraw the sidebar and session list on every word, and replies now appear as they are written.
- Explore mode asks before running commands outside its read-only list instead of refusing them, with Allow once and Deny. Commands that write files are still blocked.
- Mission Control lists failing scheduled jobs, with Run now, View output and Resume. Jobs that keep failing pause themselves and notify you.
- Settings › App › Export diagnostics saves a privacy-redacted zip of logs to attach to a support request.
Bug Fixes
- Explore mode's read-only checks now apply on every machine. Before, on Windows and on Macs or Linux machines with PowerShell installed, some commands (for example ones with options like -ne or -le) skipped them.
- A turn cut short because the Claude process stopped now says so and resumes once, instead of stopping silently.
- Sessions reconnect after your computer sleeps, and a background task that was stopped is reported as stopped, not finished.
- WhatsApp recovers from timeouts and decrypt failures, reconnects with backoff, and tells the bound session about messages it could not read. Message logs no longer contain phone numbers.
- Databricks and OAuth sign-ins no longer get marked as needing sign-in by an older refresh after you reconnect.
- GitHub Copilot shows each model's real context limit.
- Script automations appear in Automations › Scheduled.
Notes
- If your Mac still sleeps during long runs: closing the lid without an external display, an organization's device-management policy, or very low battery will still put it to sleep. Keep it on power with the lid open, or ask IT whether a policy enforces sleep.
- Automation output beyond 8 MB per stream is not stored, to keep credentials out of saved logs.
v0.14.14 — Fabric artwork on every platform
Improvements
- A server deployment guide covers verified downloads, private systemd configuration, secure connections, provider sign-in, updates and rollback.
- Remote servers include Fabric release notes for the What's new view.
Bug Fixes
- Windows builds preserve the reviewed Fabric artwork, fixing a release failure that left Windows users on 0.14.12.
- The browser favicon, Apple touch and installed web app icons use Fabric artwork and load before sign-in.
- Docs, viewer and CLI tool icons use the Fabric triple-arc symbol.
Notes
- Machines settings, fleet controls and delegation remain in development.
- Each remote machine keeps its own provider sign-ins. Credentials are never copied between machines.
v0.14.13 — Fabric branding throughout the remote web UI
Bug Fixes
- The remote login page, browser favicon, Apple touch icon and installed web app icons now use Fabric artwork.
- Login icons load before sign-in, with versioned URLs to replace previously cached artwork.
- The docs favicon alias, shared viewer favicon and Fabric CLI tool icon use the Fabric triple-arc symbol.
Improvements
- Release validation checks reviewed image bytes as well as names and text. Renamed copies of obsolete artwork are rejected, including inside archives.
Notes
- Provider credentials stay on their own machine. Machines settings and fleet controls remain in development.
v0.14.12 — Safer remote connections and private server configuration
Improvements
- Remote servers suppress bearer tokens in service logs and piped output. Set
FABRIC_SERVER_QUIET_TOKEN=1to suppress them in interactive terminals too. - Configuration files and their backups use owner-only permissions on POSIX systems. Symlinked or unsecurable configuration files are refused.
- Servers using
FABRIC_CONFIG_DIRkeep their session index and isolated agent worktrees in that directory. - Existing board colors, status mappings, appearance choices and update-dismissal preferences carry over to Fabric settings keys.
Breaking Changes
- Remote workspaces and the CLI require loopback
ws://or verifiedwss://. Use an SSH tunnel or a valid TLS certificate; self-signed certificates are no longer accepted. - Update the desktop and remote server together. Wire protocol 2 rejects older peers before authentication. Web UI users must sign in again. Some MCP providers may require a new Fabric client registration and reauthorisation.
- CLI permission patterns and command detection recognise
fabric-clionly. Update custom rules that use an earlier command name.
Notes
- This release prepares the existing remote connection path. Machines settings and fleet controls are still in development.
- Provider credentials remain on their own machine and are never transferred during remote setup.
v0.14.11 — Safer remote connections and private server configuration
Improvements
- Remote servers suppress bearer tokens in service logs and piped output. Set
FABRIC_SERVER_QUIET_TOKEN=1to suppress them in interactive terminals too. - Configuration files and their backups use owner-only permissions on POSIX systems. Symlinked or unsecurable configuration files are refused.
- Servers using
FABRIC_CONFIG_DIRkeep their session index and isolated agent worktrees in that directory. - Existing board colors, status mappings, appearance choices and update-dismissal preferences carry over to Fabric settings keys.
Breaking Changes
- Remote workspaces and the CLI require loopback
ws://or verifiedwss://. Use an SSH tunnel or a valid TLS certificate; self-signed certificates are no longer accepted. - Update the desktop and remote server together. Wire protocol 2 rejects older peers before authentication. Web UI users must sign in again. Some MCP providers may require a new Fabric client registration and reauthorisation.
- CLI permission patterns and command detection recognise
fabric-clionly. Update custom rules that use an earlier command name.
Notes
- This release prepares the existing remote connection path. Machines settings and fleet controls are still in development.
- Provider credentials remain on their own machine and are never transferred during remote setup.
v0.14.10 — Background agents report back and survive sign-in refreshes, heavy commands can't swamp your machine
Improvements
- Heavy commands can't slip past the queue any more — several chats running test suites at once could still freeze a machine, because some runs never went through the queue for heavy commands. Now:
- commands behind wrappers are recognized (
unshare -rn ./netns.sh pnpm verify,sudo -E make,flock FILE cargo build,timeout -k 5 10m pnpm test,bash -lc 'pnpm test', wrapper scripts); - Fabric watches what agents' commands actually do: a command using several cores takes a place in the queue while it runs, even when nothing in its text says it is heavy (a project script that runs your test suite itself) and in ChatGPT, Copilot and other non-Claude chats;
- a command seen doing heavy work is remembered by its first words (
pnpm ecf api returns), so its next run waits its turn like a test run. Dev servers and watchers are never queued or remembered, and remembered commands are stored only as one-way hashes, never as text.FABRIC_RUN_GATE_LEARN=0turns the remembering off; - a command now waits up to 30 minutes for its turn (was 15, after which everything waiting started at once).
- commands behind wrappers are recognized (
- Large results keep what the agent asked for — with the decision model's Large results switch on, a tool result too big for the conversation is cut down to the parts the agent's request needs (the matching messages of a search, the failing lines of a log, one section of a long document) in about half a second, instead of a 7–8 second summary. When nothing matches, or nearly everything does, it is summarized as before.
- Source tools say why they are called — the agent states a one-line purpose for every source call, which Large results uses to decide what to keep.
- Adaptive thinking reads the conversation — besides your message it sees the end of the previous reply and the names of attached files (never their content), so a short "here" with an attachment or "yes, do it" keeps enough thinking. Pushback keeps your thinking level, and a request to change or send something hard to undo runs at least at High.
- See what each decision feature does — under the Decision model card's Advanced settings, each feature shows its checks, changes and failures over the last 7 days.
Bug Fixes
- A finished background agent's report is no longer lost — when a background agent or command finished while the chat was idle, Claude sometimes wrote its reply where Fabric wasn't listening, so the chat kept saying it was "waiting on the last investigation" forever. Fabric now shows every reply Claude writes on its own, keeps each of your messages paired with its own answer, and no longer asks Claude to answer the same finished task twice. Stop also cancels a message that was waiting for one of these replies.
- A sign-in refresh no longer stops your background agents — Claude sign-ins are refreshed every few hours, and a refresh ends the previous one. A chat that had been running background agents since before the refresh then failed with "Token expired", and restarting it stopped every agent still running. A running chat now picks up the refreshed sign-in where it is and carries on, background agents included.
- Guarded mode asks when the risk check cannot answer — if the decision model timed out or failed, a Guarded call ran unchecked. It now asks you, and the prompt says the call could not be checked.
- Fewer decision-model timeouts after a pause — the first check after 30 seconds without an answer now gets 2.8 seconds instead of 1.5.
- One set of checks per message — re-sending your message after an expired sign-in no longer ran the start-of-turn checks twice, and the app's own background-task notices are no longer rated for thinking level.
v0.14.9 — Many agents without a frozen machine, see where output went, GPT-6.1 Sol
Features
- This machine, in Mission Control — the overview now shows how much of your computer Fabric is using (cores and memory), which chats are using it, and which tests and builds are running or waiting their turn. Each busy chat has Pause work / Resume: pausing stops that chat's running commands (tests, builds, servers) until you resume them; the chat itself and its tools keep working. Not available on Windows.
- Follow the file a command writes to — agents often start servers like
pnpm dev > /tmp/dev.log 2>&1, so their output panel stayed empty while the server was logging away. The panel now says where the output goes and Follow file streams it live. Fabric asks the operating system which file the command is really writing (it never guesses from the command text), reads only that file, and never shows credential files or files in protected folders (~/.ssh,~/.aws, Fabric's own settings…). macOS and Linux. - GPT-6.1 Sol and future ChatGPT models — the ChatGPT model list now comes from ChatGPT itself, like the Claude list, so new models appear without waiting for a Fabric update. GPT-6.1 Sol is available now.
Improvements
- Many agents at once no longer freeze your computer — test runners and build tools each use every CPU core, so several chats or sub-agents running test suites at the same time could put 100+ processes on a laptop. Fabric now:
- lets at most two heavy commands run at a time across all chats (one on machines with fewer than 12 cores) — tests, builds, verify, type checks. The others wait their turn before they start and then run normally, so each run gets the cores it expects and finishes sooner. The command itself is never changed: same output, same result, and its time limit only starts when it runs. Dev servers and watchers are never queued, a wait never lasts more than 15 minutes, and sending the chat a message lets its waiting command go ahead right away.
FABRIC_HEAVY_RUN_SLOTSsets the number,FABRIC_RUN_GATE=0turns it off; - runs everything agents start at below-normal priority, so your own apps always come first (
FABRIC_AGENT_PRIORITY=0turns it off).
- lets at most two heavy commands run at a time across all chats (one on machines with fewer than 12 cores) — tests, builds, verify, type checks. The others wait their turn before they start and then run normally, so each run gets the cores it expects and finishes sooner. The command itself is never changed: same output, same result, and its time limit only starts when it runs. Dev servers and watchers are never queued, a wait never lasts more than 15 minutes, and sending the chat a message lets its waiting command go ahead right away.
- Updated the agent runtime for ChatGPT, Copilot and other non-Claude models (Pi SDK 1.0.2).
Bug Fixes
- A busy background agent no longer shows "status unknown" — Fabric now trusts Claude Code's own list of what's running, so an agent that is working keeps its running chip. This includes agents the main agent resumes after a usage limit, which also get their live output panel back.
- Task output stays within its workspace — a client connected to one workspace can no longer read background-task output from another workspace's chats.
v0.14.8 — Memory under control, agents that always report back, a native Mission Control
Improvements
- Pages follow their template when you haven't changed them — a page installed from a template now updates itself to the newer template version that comes with a Fabric update, keeping its settings. Pages you've edited are never changed automatically; they keep the "update available" prompt, which merges your edits.
- Mission Control looks like the rest of Fabric — the project page and the all-projects overview now use the app's own page layout: a normal header, a one-line summary instead of big "0" and "$0.00" cards, only the sections that have something in them ("Nothing needs you and nothing is running." when all is quiet), and Context as plain rows. The overview lists projects as rows with only their non-zero counts.
- From a project to its Mission Control — clicking a project in the sidebar still shows its sessions; a bar above the list now links to the project's Mission Control and its details page.
Bug Fixes
- Logs no longer grow without limit — the automation event log (
events.jsonl) recorded a scheduler tick every minute and was never trimmed; on a long-used install it reached tens of megabytes and kept growing. It is now capped at 10 MB, and the page-action and privileged-action audit logs at 5 MB each, keeping one previous copy. An already oversized log is cleared on the first write after updating. - No Fabric window outlives Fabric — if Fabric's main process stopped unexpectedly (a crash, a forced quit), a window's process could keep running on its own, using memory and CPU with nothing on screen; one stayed alive for three days. Windows now close themselves when Fabric is gone, and Fabric stops any such leftovers from earlier runs when it starts.
- Fabric watches its processes' memory and frees what it can — every process Fabric starts counts as Fabric: each chat's Claude process, its MCP servers, and everything agents run (dev servers, test runs with many workers, browsers). With several agents at once this could run a machine out of memory. Fabric now measures all of it every 30 seconds (on macOS the same figure Activity Monitor shows, and it also reacts to macOS's own memory-pressure signal):
- when memory gets tight it releases the process of idle chats with nothing running in the background, two at a time, least recently used first; they pick up where they left off on the next message;
- when it gets critical it tells you which chats and processes are the heaviest, including anything a released chat left running, so you can stop what you don't need.
It never stops a running turn or any background task on its own. A small
logs/memory.log(program names only, never their arguments) records what it saw and did, so it can be shared when reporting a problem.FABRIC_MEMORY_LIMIT_GBsets a different budget;FABRIC_MEMORY_GUARD=0turns it off.
- Agents always pick up their background work — three more ways a session could end up waiting forever are closed:
- Fabric now uses Claude Code's own list of what's still running in the background, so it never shuts an agent's process down while anything (a command, a background agent, a Monitor) is still running.
- If a background task stops without reporting back, Fabric notices within a minute, closes its chip and tells the agent to check its output.
- After Fabric restarts, each session whose background work was cut off gets a note listing what was interrupted, so the agent restarts what's still needed or tells you, instead of waiting. Only work started in the last 12 hours is picked up; set
FABRIC_RESUME_INTERRUPTED_BACKGROUND=0to turn this off.
- A background agent that picks up its own work again still reports back — when a background agent's own background command finished after the agent had already reported, Claude Code restarted the agent to read the result. Fabric still thought that agent was finished, so when it reported the second time, the main agent never woke up and kept waiting ("I'll wait for that report…"). Fabric now treats the restarted agent as running again, keeps the session alive for it, and wakes the main agent when it finishes.
v0.14.7 — Background commands finish what they started
Bug Fixes
- Background commands keep running after the agent replies — when an agent ended its reply with a command still running in the background (a test run, or a wait for one), Fabric shut the agent's process down a minute later as idle, which killed the command. The agent never heard it finish, so after a compaction or a long run you had to type "continue". Fabric now keeps the agent alive while its background commands run, and the agent picks up their results by itself.
- The output panel says the right thing in every state — View Output and View activity open the same panel for commands and sub-agents. A command that hadn't printed anything yet said "Waiting for the agent to produce output…", error messages always talked about an agent, and a finished agent with nothing readable still said it was waiting. Each case now has its own message (a command that hasn't printed anything yet, a command that finished without output, an agent that hasn't started writing, output that is no longer available), and the panel's text is translated instead of always showing English.
v0.14.6 — Auto-compact on time, View Output that shows the output
Bug Fixes
- Auto-compact no longer waits on stuck background tasks — while background work runs, auto-compact waits a little longer (your setting + 7%). A command that had already ended, or a task that had gone quiet, still counted, so a long session could climb past 90% without compacting. Ended commands and tasks silent for 30 minutes no longer hold it back.
- View Output on a background command opens its output — it used to copy the output to the clipboard without showing it. It now opens the live output panel, which keeps updating while the command runs.
- Pages: the buttons on the empty page stay on one line — "Ask an agent" and "Create blank Page" no longer wrap onto two lines.
v0.14.5 — Mission Control, herdr like the real thing, and a pause instead of a dead end
Features
- Mission Control for every project — one page per project that shows what needs you (permission prompts, plans to review, blocked sub-agents, waiting herdr agents, unread results), what is running (sessions with their sub-agents and background tasks, with Stop), the project's board, an activity log with what each turn cost, and the project's memory, files and pages. Mission Control in the sidebar also opens an overview of all projects with their counts and today's spend.
- Company branding per project — give a project its client's name, logos and accent colours (project Settings → Branding). Mission Control shows the project in those colours; anything left empty falls back to the app-wide company brand, then to Fabric.
- herdr: copy mode, resizable splits and more of herdr's keys — In the herdr view,
prefix [opens copy mode: search the pane's whole scrollback and copy what you find. Drag a split border to resize panes, or use resize mode (prefix r) and herdr's resize keys. Rename a pane by double-clicking its name (orprefix P), swap panes (prefix H/J/K/L), go back to the last pane, move tabs and workspaces, move a pane into its own tab, and jump between workspaces or agents with herdr's keys. Clicks now reach agents that use the mouse (with herdr 0.9.2 or newer); Shift+drag always selects text.
Bug Fixes
- Background agent activity is readable — View activity on a background agent showed its raw transcript (lines of JSON). It now shows the task it was given, what it says, each tool it calls with a short description, and a short excerpt of each result (errors in red). Plain command output is shown as before.
- Finished background commands stop showing as running — a command the agent ran in the background (for example restarting a dev server) kept its "running" chip until Claude Code got round to reporting the end, sometimes 40 minutes later. Fabric now sees the end in the command's own output right away.
- Stopping a background command tells the truth — if Fabric can't find the command's process and it hasn't ended, Stop now says so and keeps the chip instead of pretending it stopped; output is only ever shown to the session that ran the command.
- Hitting the step limit pauses instead of failing — when the agent used all its steps for one message (200), you got a red "Reached maximum number of turns" error and had to type something to carry on. It now says it paused and shows a Continue button that picks up where it left off.
- herdr: "Needs you" and notifications open the right agent — clicking a waiting agent (on the herdr home page, in the command menu or in a desktop notification) now opens its own tab with the keyboard on its pane, instead of whatever tab herdr last had in front.
- herdr: fewer, better-timed notifications — no notification for the agent you're already looking at, none when herdr is set to post system notifications itself (no doubles), and like herdr it waits a moment so an agent that only paused briefly stays quiet. Notifications are in your language.
- herdr: your keybindings, as you set them — herdr settings with several keys per action (
prefix = ["ctrl+space", "ctrl+s"]) work, changes to herdr's config apply right away without a restart, and a key after the prefix that does nothing now says so. - herdr: Fabric no longer moves your herdr window — switching tabs or panes in Fabric, splitting or opening a tab no longer switches the tab of a herdr window you have open in a terminal; "Focus in herdr" still does on purpose.
- herdr: smoother layout updates — zooming a pane no longer resizes every other pane's terminal and back; resizes, moved tabs and reordered workspaces done in herdr show up at once instead of after up to 15 seconds; renaming one tab no longer opens a different tab in rename mode later; splitting or closing from the command menu now behaves like the keys (the new pane gets the keyboard, a pane is never closed twice).
- herdr: agents can start in an existing workspace — the agent's herdr tool can launch a new agent as a tab of a workspace you already have.
v0.14.4 — Live page templates, compaction that keeps more, herdr copy and paste
Features
- Page templates and live pages — Pages → Templates gives you ready-made live dashboards: Databricks Cost Radar, Databricks Jobs Health, Databricks SQL Studio, Jira Issues Radar, Azure DevOps Radar and GitHub PR Radar. Point them at your sources, approve read-only access once, and they refresh on their own while open. Every page is yours to change (by hand or with the agent), template updates merge with your edits, and you can save your own pages as templates and share them with Export/Import.
- Live (auto-refresh) approvals — a page can ask to read without a click. Fabric checks every such call only reads (read-only SQL, query endpoints, read-only MCP tools) and refuses anything that could change data. Pages built on the page kit also have no network access of their own, so what they read can't be sent anywhere else.
- Page kit — a shared look and toolkit for pages (header, tiles, tables, filters, detail panel, live refresh) that follows your theme and company branding, including your logo. The agent uses it when it builds dashboards.
- Compaction that keeps more — click the context badge to compact now, compact with a focus, or compact when the current turn ends, and to set when Fabric compacts on its own. Old tool output is cleared first so compaction comes later; afterwards the latest exchanges and any messages you pin come back, the agent can search the full conversation history, and the divider has Undo (a branch from just before the compaction). In project sessions, lasting facts are saved to the project's memory before compacting.
- herdr: copy text out of agent panes — selecting text in a herdr pane copies it, as herdr does (its
copy_on_selectsetting is respected), and Ctrl+Shift+C copies the selection; Ctrl+C still goes to the agent.
Improvements
- Cleaner page previews — a page without a preview yet shows a page outline with its kind icon instead of a letter under an icon.
- One-line sidebar items — long page and session names stay on one line with the full name on hover.
Bug Fixes
- herdr: paste images, and keys work like a normal terminal — pasting an image (Ctrl+Shift+V, Shift+Insert, Cmd+V or right-click → Paste) into a Claude Code, Codex, Droid, Kimi Code or Grok pane in the herdr view did nothing; it now attaches the image, just as Ctrl+V does. Multi-line text pastes land as one paste instead of running line by line, Shift+Enter adds a new line instead of sending, and Shift+Tab and Esc reach the agent instead of triggering Fabric shortcuts.
- herdr: tabs and panes close with one click — the close button had to be clicked twice or more. It now closes at once, as in herdr itself; closing a whole workspace still asks first.
- Background agents no longer show "status unknown" while working — a long-running background agent sends no progress updates, so after 20 minutes its chip claimed the status was unknown and flickered back and forth. Fabric now treats the agent writing its activity log as a sign of life.
- Background commands show once, with their output — a command the agent ran in the background showed up twice (as a Shell and a Task), both turned "status unknown" after 20 quiet minutes, and View output said there was no output while it ran. It now shows once, stays "running" while it's quiet (a dev server waiting for requests), and View output shows what it has printed so far.
- "See activity" works for background agents — the activity panel rejected every background agent's log as "outside the registered task output location". Fixed.
- The agent no longer stops mid-turn when a tool isn't available — if the agent tried a tool from a source that isn't connected, its turn ended silently until you pressed Continue. It now gets the "not available" message and carries on.
- Databricks sources' read-only rules now apply — four bundled Databricks sources shipped a permissions file that didn't parse, so their allowed-endpoint lists were ignored, and the SQL Warehouse source pointed at a statement path that doesn't exist. Both are fixed, and untouched copies in existing workspaces are repaired on start.
- Page previews are safer — data shown in a page preview can no longer break out of the preview, and pages can't navigate away with data in the address.
v0.14.3 — Token Optimization works with every shell setup
Bug Fixes
- Token Optimization with a Fabric-installed rtk — When rtk was installed with the one-click Install button, commands the agent ran could fail with "rtk: command not found" if your shell setup replaces
PATH(common on macOS). Fabric now calls the rtk it installed by its full path, so Token Optimization works however your shell is configured. An rtk you installed yourself is used as before.
v0.14.2 — Voice dictation, herdr, company branding, Cloudflare Clef, one-click rtk
Features
Voice dictation — Speak your message instead of typing it. Turn it on in Settings → Input → Voice dictation, then press the mic button in the message box or ⌘⇧M (Ctrl+Shift+M on Windows and Linux); the transcript is inserted at the cursor and nothing is sent until you send it. Uses OpenAI's gpt-4o-transcribe with your own key, or reuses the key of an existing OpenAI API-key connection. Choose press-to-toggle or hold-to-talk, and optionally a language.
- While you speak, the message box shows a live waveform, a timer, and cancel / done (Esc / Enter, which never sends the message); then "Transcribing…" until the text lands at your cursor.
- The mic is always in the message box; until dictation is set up it opens its settings.
- Settings shows the OpenAI key in use (masked), when it was added, and whether OpenAI accepts it — Working, Rejected or Couldn't check — re-checked when you open Settings and after every dictation.
herdr in Fabric Agents — Run, watch and drive the coding agents you use with herdr without leaving the app. A new herdr section in the sidebar shows your workspaces with live status and a "waiting" badge; each workspace opens with herdr's tabs and split layout, and every pane is a real, interactive terminal (type, scroll, use Claude Code, Codex or OpenCode directly). ⌘⇧P opens herdr commands: split, zoom, new tab or workspace, start any agent herdr supports, jump to agents that need you, and actions from your herdr plugins. Desktop notifications tell you when an agent needs you or finishes. If herdr isn't running, start it from the app (optionally on launch); Settings → herdr also offers herdr's own updater when a newer version is out. In chat, the agent gets
herdr_statusandherdr_controltools to list, read, prompt, wait on and launch herdr agents.- herdr's own keybindings work in its terminals: Ctrl+B then
v/-to split,hjklto move between panes,zto zoom,cfor a new tab,n/p/1–9for tabs — including your custom bindings and prefix from herdr'sconfig.toml. Ctrl shortcuts inside a terminal go to the terminal, not the app. - Terminals draw with the GPU and follow your theme (background, text color, light/dark).
- The Herdr sidebar item appears once herdr is installed or running; otherwise Settings → herdr explains it and links to the installer.
- herdr's own keybindings work in its terminals: Ctrl+B then
Company branding — Show your company's logo and colors: Settings → Appearance → Company branding. Upload a logo (with an optional dark-mode version) and pick brand, background and text colors for light and dark mode; they become a theme named after your company. A subtle "Powered by Fabric" link stays in the top bar, and Reset to Fabric restores the default look.
Cloudflare Clef for decision models — Settings → AI → Decision model now offers Cloudflare's Clef models (
clef, andclef-flashfor the fastest checks), either straight from Workers AI or through your Cloudflare AI Gateway for logs, caching and rate limits. Enter your account or gateway URL and a Cloudflare API token, then press Test.One-click rtk install — Settings → AI → Performance → Token Optimization now has an Install button: Fabric downloads the official rtk for your Mac, Windows or Linux computer, checks it against its published checksum, sets it up and switches Token Optimization on — no terminal or admin rights. Out-of-date copies get Update now.
Improvements
- Compacts before the context runs out — When a turn ends with the context at 85% or more of its limit, the conversation is compacted right away, so the next message starts with room instead of running past 100%.
- Smoother session switching — Clicking between sessions does less work: the session list renders 50 rows at first (more load as you scroll), and the herdr and voice features no longer re-render the window or call the main process when nothing changed.
- Token Optimization explained — Settings → AI → Performance now says what rtk does (it shrinks command output before the agent reads it, usually 60–90% fewer tokens) and links to a guide with install commands for every platform.
- Decision model settings only when it's on — Settings → AI → Decision model now shows just the switch while it's off; provider, key, model, test and Advanced settings appear once you turn it on.
Bug Fixes
- Context meter no longer reads 200–300% — On Claude sessions the meter could divide by a helper model's smaller context window (for example 200K instead of Opus's 1M), so it climbed far past 100% before anything compacted. It now uses the session model's own window.
v0.14.1 — Decision model features, Guarded mode, safer "Always Allow"
Features
Decision model (opt-in) — Settings → AI now has a Decision model card. It connects a small, fast model that answers typed questions (pick one of these, score this, yes or no) with probabilities in about a quarter of a second, instead of writing text. Use Jev through TypeSafe, OpenRouter or Vercel AI Gateway with your own key, reuse the key of an existing OpenRouter or Vercel AI Gateway connection, or run Laya on your own machine for free (
laya-serve, with a built-in health check). It is off by default, and nothing is sent anywhere until you turn it on. Each feature below has its own switch under the card's Advanced settings, grouped into Agent, Conversations, Permissions, and Automations and tasks, with a tooltip saying what the model is asked. A decision can add a prompt, a hint or a skip, but it never approves anything, and when the model is unsure, slow or unreachable the app behaves exactly as before. Every call is recorded in~/.fabric-agent/logs/decisions.jsonlwith a hash of the input, never the input itself.Guarded permission mode — A new mode between Ask to Edit and Execute. The agent works as in Execute, but Bash commands, MCP writes and non-GET API calls are checked first, and you are asked before anything that is hard to undo, leaves the project or reaches other people and services. File writes outside the working directory and the session's plans and data folders always ask, without a model call. It is offered while the decision model and its Guarded mode switch are on; if the check can no longer run, a Guarded session behaves like Ask to Edit. Execute is unchanged and never consults the decision model, and a plan approved from Explore returns the session to Guarded if it came from there.
The agent can make quick judgments with
decide— While the decision model is on, the agent has adecidetool for classifying, routing or scoring up to 200 items at once, returning probabilities rather than prose, in a fraction of the time and cost of a language model call.Smarter conversations — With the matching switches on:
- Adaptive thinking lowers the thinking level for simple turns ("thanks!", a quick question), never above the level you set.
- Mid-turn messages decide whether a message you send while the agent works corrects the running task (steered in) or is a separate follow-up (queued), and merge a message you split over two sends into one request.
- Smart titles skip small talk ("hey 👋") and title the session when you ask for something, then refresh the title when the conversation moves on. A title you set yourself is never replaced.
- Suggestions point the agent to the skill or inactive source your message needs, such as your calendar source for "find a free slot on Saturday". Nothing is enabled on the model's behalf.
- Turn outcome moves a session to Needs Review when the agent ends its turn waiting for you (a question, a decision, a blocker), not when it just offers more help. In tasks, a subtask that asks for input or gives up counts as failed.
- Risk badges show what a permission prompt would do (deletes, sends, publishes, credentials, system, spends).
- Large results skip the multi-second summary of a big tool result when its beginning and the saved file are enough.
Semantic automations and labels — Label auto-rules can ask a question instead of matching a pattern (
{ "semantic": "Is the user planning a trip?" }, orfabric-cli label auto-rule-add --semantic), and automations can carry a condition (semanticCondition) that must hold before they run. Skipped runs are recorded as skipped in the automation history. For tasks, a verifier reply without aVERDICT:line is read by the decision model before the app asks again, and a failed run repairs only the subtasks the reply blames. Inferred verdicts show their confidence in the task editor.
Improvements
Ask to Edit runs read-only MCP tools without prompting — Ask to Edit prompted for every MCP call, even
list_*tools that Explore mode runs silently. It now applies the same read-only rules as Explore, including the patterns in your workspace and sourcepermissions.json; writes still ask.Token Optimization update prompt — rtk versions before 0.44.0 corrupted the output the agent read (grep lines with a colon,
wcreading from<, crashes on piped output). Older versions are no longer used; while Token Optimization is on, a dialog explains what breaks and offers the update command, and Settings → AI → Performance shows the outdated state. Commands starting withcommandorbuiltinare never rewritten,rtkExcludeCommandsinconfig.jsonis honoured, and the agent is told how to get exact output."Always Allow" is hidden when it would remember nothing — Prompts from Guarded mode and commands without a safe key no longer show a button that had no effect.
Leaner app bundle — Two unused MCP server bundles left over from the Codex and Copilot backends were removed.
Bug Fixes
"Always Allow" remembers exactly what you approved — It remembered the first word of the command, so approving one
gitcommand also allowedgit push --force,git reset --hardorgit commit -m x && rm -rf ~for the rest of the session. It now remembers the subcommand (git commit,aws s3 ls), the exact command for interpreters and runners (python x.py,npm run build), or the hosts forcurlandwget. "Always Allow" on file writes and API calls, which silently did nothing, now works.Explore mode's read-only checks are tighter — MCP tools such as
delete_account,send_thread_replyorupdate_spreadsheetran in Explore because read verbs were matched anywhere in the name, andgh api -X DELETE,gh api -f(an implicit POST),sed -n -i,sed -n 'w file'andsort -opassed as read-only. All of these are now blocked in Explore.spawn_sessioncannot start a more permissive session — The mode came from the model, so an Ask to Edit session could spawn an Execute session without asking. A spawned session now gets at most its parent's mode. On Pi connections, a required prompt no longer becomes an allow after a source is activated, and a tool call that needs a prompt is denied when no one can answer it.Plans and sign-ins no longer read as "declined" — Submitting a plan or starting a source sign-in interrupted the tool while it was still running, so the transcript recorded "The user doesn't want to proceed with this tool use": the plan step showed as failed, and after an unanswered sign-in the agent told you that you had declined it. The tool's real result is now recorded first.
Long-running tools no longer look like a loop — A tool call that ran for minutes added a new "Running …" row every 30 seconds, which read as the agent calling the tool again and again. The heartbeats now only update the running tool's elapsed time.
Large MCP results are summarized before the agent reads them — Only API sources had big results saved to a file and summarized for the model. Results from MCP servers and session tools reached the model in full, and a summary was generated afterwards only for the transcript. They are now handled before the model sees them, and no summary is made for results it has already read.
Source activation continues the turn — Activating a source mid-turn stopped the session when the turn had no text (for example an attachment-only message). The turn now continues with the previous message. The automatic retry after an activation no longer appears as a duplicate message, keeps corrections you sent during the turn, and keeps the turn's thinking level.
No more phantom "background task finished" prompts — An idle session could be woken with "the background agent you launched has finished" for tasks it never launched, and Bash tasks showed 0 s in
list_background_tasks. Background tasks are now attributed from the SDK's structured events.Stop no longer re-runs your message — Pressing Stop in a Claude session could send the same message again instead of stopping.
Thinking level changes apply mid-session — On Claude, changing the thinking level in an ongoing session took effect only after the session restarted; it now applies from the next turn.
Quick successive sends no longer fail — The session file was rewritten on every message, and two messages sent quickly could fail with a file error.
Automations cannot trigger themselves — An automation that labelled its own session could fire again for that label. Automations now never run for an event about a session they created, and chains of automation-created sessions stop at three levels.
source_testno longer reports a source without a credential as connected — A source marked authenticated whose token was missing passed the check; it now tries a refresh and otherwise asks you to sign in again.CLI —
fabric-cli automationkeeps an automation'ssemanticCondition, conditions and Telegram topic when editing, and new task labels always get valid ids.