Releases: JanusMael/ClaudeForge
Release list
ClaudeForge 2026.3.724
Downloads
| Platform | Architecture | File |
|---|---|---|
| Windows | x64 | ClaudeForge-win-x64.zip |
| Windows | ARM64 | ClaudeForge-win-arm64.zip |
| Linux | x64 | ClaudeForge-linux-x64.tar.gz |
| Linux | ARM64 | ClaudeForge-linux-arm64.tar.gz |
| macOS (Intel) | x64 | ClaudeForge-osx-x64.tar.gz |
| macOS (Apple Silicon) | ARM64 | ClaudeForge-osx-arm64.tar.gz |
The version (2026.3.724) is encoded in the release tag rather than in
the archive filenames — publish.ps1 produces unversioned artefact names
so local dev builds and CI builds share one filename pattern.
Linux: Extract, then run the bundled linux-setup.sh to install a per-user .desktop entry so Wayland compositors render the window icon correctly:
tar -xzf ClaudeForge-linux-x64.tar.gz -C ~/ClaudeForge
cd ~/ClaudeForge
./linux-setup.sh
./ClaudeForgemacOS: The binary is unsigned. Use the bundled allow-app-to-run.sh to strip the Gatekeeper quarantine xattr from every file in the extracted directory:
tar -xzf ClaudeForge-osx-arm64.tar.gz -C ~/ClaudeForge
cd ~/ClaudeForge
./allow-app-to-run.sh
./ClaudeForgeAdded
- Claude Opus 5 in the model picker. The
opusalias now resolves to Opus 5,
and it appears in the Essentials model card and the Model & Effort suggestion
list with its own tooltip. Opus 4.8 remains selectable as a pinned snapshot
(claude-opus-4-8). - Memory page — "Configuration" category. The JSON files Claude reads are now
inventoried alongside memory files: user-scopesettings.json,mcp.json,
managed-settings.json(and itsmanaged-settings.d/*.jsondrop-ins) and
~/.claude.json, plus the open project'ssettings.json,settings.local.json,
andmcp.json— each openable from the list. Credentials are deliberately
excluded. - About page — config file path shown. The resolved path of the primary config
file (e.g.~/.claude/settings.json) is now displayed and selectable next to the
Open / Reveal buttons, so it's clear which file those actions target.
Fixed
- Pages no longer show stale state after changes made outside the app or on
another page. Each page now re-reads its source when you navigate to it, rather
than only at first load:- Essentials — model, effort, token-limit, and update-channel cards refresh
after an externalsettings.jsonedit or an edit made on the Model & Effort page. - Environment — a User / Machine environment variable set outside the app now
appears without a settings reload or restart (current selection is preserved). - Memory — a file created after launch (e.g. a new global
~/.claude/CLAUDE.md)
shows up without pressing Refresh. - Agents & Skills — agents, skills, and commands added after the first visit
now appear. - Profiles / Backups — profiles and archives created or removed outside the
app are reflected. - About — "Open Config" / "Reveal Config" no longer stay disabled for the rest
of the session when the config file is created after launch.
- Essentials — model, effort, token-limit, and update-channel cards refresh
ClaudeForge 2026.3.715
Downloads
| Platform | Architecture | File |
|---|---|---|
| Windows | x64 | ClaudeForge-win-x64.zip |
| Windows | ARM64 | ClaudeForge-win-arm64.zip |
| Linux | x64 | ClaudeForge-linux-x64.tar.gz |
| Linux | ARM64 | ClaudeForge-linux-arm64.tar.gz |
| macOS (Intel) | x64 | ClaudeForge-osx-x64.tar.gz |
| macOS (Apple Silicon) | ARM64 | ClaudeForge-osx-arm64.tar.gz |
The version (2026.3.715) is encoded in the release tag rather than in
the archive filenames — publish.ps1 produces unversioned artefact names
so local dev builds and CI builds share one filename pattern.
Linux: Extract, then run the bundled linux-setup.sh to install a per-user .desktop entry so Wayland compositors render the window icon correctly:
tar -xzf ClaudeForge-linux-x64.tar.gz -C ~/ClaudeForge
cd ~/ClaudeForge
./linux-setup.sh
./ClaudeForgemacOS: The binary is unsigned. Use the bundled allow-app-to-run.sh to strip the Gatekeeper quarantine xattr from every file in the extracted directory:
tar -xzf ClaudeForge-osx-arm64.tar.gz -C ~/ClaudeForge
cd ~/ClaudeForge
./allow-app-to-run.sh
./ClaudeForge✨ New & improved
One model picker, everywhere. Essentials and Model & Effort had two different
controls — Essentials had fuzzy, friendly suggestions but looked like a bare text box;
Model & Effort had the drop-down chevron but listed raw hyphenated ids. They're now a
single shared ModelPicker: friendly brand names ("Opus 4.8") over the dim raw id, fuzzy
matching (typing Opus finds opus, claude-opus-4-8, opus[1m]), and the chevron
that drops the full list. A custom id can still be typed by hand.
Environment page: env is now browsable. Its ~305 declared variables render as
collapsible, virtualized categories grouped by name prefix — CLAUDE · 159, OTEL · 30,
ANTHROPIC · 40, … plus Other — with headers in the page accent colour. Previously a
single flat wall of editors.
theme is a real picker. It's schema-defined as a string (a fixed enum or a
custom:<slug> reference), but was falling through to the raw-JSON box. It now renders as
a value picker with the 7 theme names as suggestions and free-form typing for
custom:<slug> — which also makes the old, baffling "Value matches none of the 2
permitted variants" error impossible to hit.
Smarter raw-JSON editor for settings with no structured editor: a Format button
(parse + pretty-print) and live structural validation — a wrong root kind ("expects a JSON
array, but the value is an object") or a missing required property now surfaces inline as
an amber advisory, distinct from the red hard parse error.
Loading is no longer easy to miss. App load (which can take several seconds, while the
window is still painting) now shows a centered progress card over a dimmed content area,
replacing the 100×4 bar tucked into the status bar's bottom-right corner.
Richer schema-validation banner — reports the offending value, the scope that defines
it, and the permitted values, and stays selectable/copyable.
Memory → User Memory renders front-matter richly, matching Agents & Skills.
JSON tooltips + formatted-JSON popups are now consistent across the grids and the
Effective tabs (previously only some surfaces had them).
Deep-link filters are visibly marked — navigating from a search result injects a
property filter, and the filter box now carries an orange frame matching the deep-link
Back button, which clears the moment you edit or clear the filter.
🐛 Fixes
- Diagnostics windows crashed on re-open. Closing the F12 log window (or the Shift+F12
config-events window) with the OS ✕ destroyed it, so the next toggle threw
Cannot re-show a closed window. They now hide on close instead. - The Essentials model editor rendered blank (title and description, no input). A
subclassedAutoCompleteBoxtakes its own type as style key, so it matched no
ControlThemeand got no template. - The deep-link orange filter frame never appeared — for any deep link, not just
search. Two Avalonia traps stacked: the style was scoped to the element it targeted
(a control'sStylesapply to descendants, not itself), and the element also set
BorderBrushas an attribute — a LocalValue, which outranks every Style setter. - Claude Desktop → Version Information: "Open Config" and "Show in files" were disabled.
⚡ Performance
Environment properties page: ~4.4s → instant. The env object rendered its ~305
children eagerly through a non-virtualized nested list, realizing 306 property-editor
rows on every visit. (The page's top-level list was virtualizing correctly all along —
Advanced, with 94 top-level editors, only ever realized 7. The cost was nesting, not
count.) Large objects now render as collapsed categories whose children aren't built until
expanded, and each expanded section is bounded and virtualized.
Mid-sized objects (e.g. sandbox, 35 children) are untouched and still render inline —
the accordion is reserved for the pathological case (>150 children).
🔭 Diagnostics
[Editor.Rebuild] group=… editors=N elapsedMs=Tand[Editor.Activate] … rebuilt=…—
shows whether a slow page is a view-model rebuild or view realization.[PropView.Realized] group=… wrappers=N sinceCtorMs=T— a standing perf guard. A healthy
page realizes a screenful; a count in the hundreds means something is eagerly building a
subtree again (this is what localized the Environment regression).
📚 Docs
docs/AVALONIA-GOTCHAS.md— three new sections: Styling / theming (LocalValue
outranks every Style setter; a control'sStylesapply to descendants, not itself — and
both traps can mask each other), Templates / controls (DataTemplates match in
declaration order, so a subclass template must precede the base;ItemFiltersupersedes
FilterMode), and Virtualization / perf (virtualization is per items-host and needs a
bounded viewport;IsVisible="False"still realizes a subtree).AGENTS.md— the same rules added to the agent rules table and topic index.
ClaudeForge 2026.3.710
Downloads
| Platform | Architecture | File |
|---|---|---|
| Windows | x64 | ClaudeForge-win-x64.zip |
| Windows | ARM64 | ClaudeForge-win-arm64.zip |
| Linux | x64 | ClaudeForge-linux-x64.tar.gz |
| Linux | ARM64 | ClaudeForge-linux-arm64.tar.gz |
| macOS (Intel) | x64 | ClaudeForge-osx-x64.tar.gz |
| macOS (Apple Silicon) | ARM64 | ClaudeForge-osx-arm64.tar.gz |
The version (2026.3.710) is encoded in the release tag rather than in
the archive filenames — publish.ps1 produces unversioned artefact names
so local dev builds and CI builds share one filename pattern.
Linux: Extract, then run the bundled linux-setup.sh to install a per-user .desktop entry so Wayland compositors render the window icon correctly:
tar -xzf ClaudeForge-linux-x64.tar.gz -C ~/ClaudeForge
cd ~/ClaudeForge
./linux-setup.sh
./ClaudeForgemacOS: The binary is unsigned. Use the bundled allow-app-to-run.sh to strip the Gatekeeper quarantine xattr from every file in the extracted directory:
tar -xzf ClaudeForge-osx-arm64.tar.gz -C ~/ClaudeForge
cd ~/ClaudeForge
./allow-app-to-run.sh
./ClaudeForgeWhat's Changed
✨ Features
Rendered markdown body on the Agents & Skills page
The Sub-agents / Skills / Slash-commands viewer now renders the file body as formatted markdown (view mode) instead of a raw monospace TextBox, matching the Memory viewer. Edit mode still shows the raw text, so what you edit stays honest.
- Front-matter card and body now share one scroll region, so the front-matter scrolls away with the content instead of the body scrolling in its own inner pane.
- New Copy markdown toolbar button — copies the full file (front-matter + body recomposed), so a paste is a self-contained agent/skill/command definition.
Files: Views/AgentsSkillsEditorView.axaml[.cs], ViewModels/AgentsSkillsEditorViewModel.cs
Reusable MarkdownBodyView control
Extracted the markdown renderer (the dark-theme MarkdownStyle + the force-restyle tree-walk that fixes Markdown.Avalonia's inline Foreground) into a single shared control used by both Memory and Agents & Skills. Removes ~460 lines of duplicated styling/code-behind from the Memory view. Exposes a Markdown property and a VerticalScrollBarVisibility knob (Disabled lets a host's outer scroller own scrolling).
Files: new Controls/MarkdownBodyView.axaml[.cs]; Views/MemoryEditorView.axaml[.cs] (slimmed); localization: removed deprecated ButtonCloseViewer string (Memory now uses ButtonBack) across all 10 locales.
Note: this refactor and the Agents & Skills feature above touch overlapping files — cherry-pick them together.
Live config-file-events window (Shift+F12)
A second floating diagnostics window that streams every debounced config-file-watcher hit in real time, tagged with how the app reacted (external change → reloading, self-write suppressed, etc.) — useful for watching external edits from the Claude CLI or other editors. Opt-in via the diagnostics options; reachable by Shift+F12 or a launch link in the F12 log window's header. Also adds row multi-select + Ctrl+C / right-click Copy to the existing F12 log window.
Files: new LayeredEditors.Avalonia.Diagnostics/UI/LiveTailWindow.cs; AvaloniaDiagnostics.cs, AvaloniaDiagnosticsOptions.cs, UI/LiveLogWindow.cs; Program.cs, ViewModels/MainWindowViewModel.cs (feed), Views/MainWindow.axaml.cs (Shift+F12).
🐛 Fixes
Save button no longer disabled by the install banner
CanSave gated on !ShowInstallBanner, so the --showInstallBanner debug flag disabled Save even with products installed and real unsaved changes pending. Save now depends only on there being unsaved changes (and not being mid-load). Covered by a new regression test.
Files: ViewModels/MainWindowViewModel.cs, tests/ClaudeForge.Tests/ViewModels/HasUnsavedChangesRecheckTests.cs
🔭 Observability (logging)
Navigation & command tracing
Added structured Log.Information traces: [App.Nav] for every landed-on page, [App.Command] NavigateBack, plus [Memory.Command] / [AgentsSkills.Command] actions.
Files: ViewModels/MainWindowViewModel.cs, MemoryEditorViewModel.cs, AgentsSkillsEditorViewModel.cs
Tab-switch tracing across all tabbed pages
Every TabControl in the app now logs tab switches on a VM-driven SelectedIndex. Rebuild/programmatic re-selection is suppressed where applicable, so only real user clicks (and deep links) are logged.
[Editor.Tab],[Memory.Tab],[AgentsSkills.Tab]— settings groups, Memory, Agents & Skills[Backup.Tab]— Backup / Restore / MSIX Fix[Effective.Tab]— Effective Settings (Properties / Raw JSON)
Files: ViewModels/SettingsGroupEditorViewModel.cs, MemoryEditorViewModel.cs, AgentsSkillsEditorViewModel.cs, BackupRestoreViewModel.cs, EffectiveSettingsViewModel.cs; Views/BackupRestoreView.axaml, EffectiveSettingsView.axaml
ClaudeForge 2026.3.708
Downloads
| Platform | Architecture | File |
|---|---|---|
| Windows | x64 | ClaudeForge-win-x64.zip |
| Windows | ARM64 | ClaudeForge-win-arm64.zip |
| Linux | x64 | ClaudeForge-linux-x64.tar.gz |
| Linux | ARM64 | ClaudeForge-linux-arm64.tar.gz |
| macOS (Intel) | x64 | ClaudeForge-osx-x64.tar.gz |
| macOS (Apple Silicon) | ARM64 | ClaudeForge-osx-arm64.tar.gz |
The version (2026.3.708) is encoded in the release tag rather than in
the archive filenames — publish.ps1 produces unversioned artefact names
so local dev builds and CI builds share one filename pattern.
Linux: Extract, then run the bundled linux-setup.sh to install a per-user .desktop entry so Wayland compositors render the window icon correctly:
tar -xzf ClaudeForge-linux-x64.tar.gz -C ~/ClaudeForge
cd ~/ClaudeForge
./linux-setup.sh
./ClaudeForgemacOS: The binary is unsigned. Use the bundled allow-app-to-run.sh to strip the Gatekeeper quarantine xattr from every file in the extracted directory:
tar -xzf ClaudeForge-osx-arm64.tar.gz -C ~/ClaudeForge
cd ~/ClaudeForge
./allow-app-to-run.sh
./ClaudeForgeWhat's Changed
ClaudeForge — changes (2026‑07‑07 → 07‑08)
Hooks — schema descriptions, SDK‑first
- Surfaced hook event, command‑type, and field descriptions from the schema through the SDK (
IHooksAccessor), so headless callers and the editor share one source. New Core typesHookEventInfo/HookEventCatalog/HookCommandVariantInfo;SchemaRegistrygainedGetHookEvents/GetHookCommandVariants; killed the hardcodedCommandTypeInfosmirror. - Bug fixed: event descriptions never rendered in the app — the GUI builds its client via
FromExistingWorkspace(noOpenAsync), soSchemaHookEvents()read an empty_cachedSchemaNodes. Added a bundled‑schema fallback + regression tests.
Hooks — new "Flow" tab
- Added a Flow tab between Properties and Effective, hosting your
hooks-lifecycle.svg, via theIGroupTabCustomizermechanism (now threads aSelectTabdeep‑link callback). - Added
Svg.Controls.Skia.Avalonia 12.0.0.13(+Svg.Skia→ 5.1.1) for a native<svg:Svg>control; newHooksFlowViewwith zoom (Ctrl+wheel cursor‑anchored, ±, Fit‑width, Reset), scroll, natural‑size render, and a floating overlay toolbar (so the diagram scrolls under the pane, not under a band). - New localized strings (
HeaderTabFlow,LinkHookFlowDiagram, zoom labels) across all 8 locales.
Hooks — Properties polish
- Event header → 2‑line (name + Add hook on row 1, full wrapped description below); Add‑hook now sits right after the event name.
- "View flow diagram" link moved up to the "Hooks" property‑name header via a new generic
HeaderActionslot on the basePropertyEditorViewModel(compiled‑bound, reusable by any editor).
Model catalog / effort levels
- Refreshed schema narrowed the settings‑file
effortLevelto[low, medium, high, xhigh](max/ultracode are session‑only); fixed the parity test. - Added
ultracodeas a session‑only, non‑persisted tier to mirror Claude Desktop's slider, on models with the full xhigh+max range (Fable 5, Opus 4.8, Sonnet 5, Opus 4.7).
Bundled schema
- Refreshed
claude-code-settings.jsonfrom schemastore.org to current (+~1,200 lines)
Test infra
- Fixed the order‑dependent flake
DeleteFootprintAsync_NoDialogService_DeletesImmediately: theAsyncLocaltest‑home override didn't propagate from the sync[TestInitialize]into the async test'sTask.Run(which readsClaudeHomeon a pool thread), so it deleted from the wrong home. Re‑asserted the override inNewFakeClient(); keptAsyncLocal(Sdk.Tests runs parallel and needs it). Backed out anAsyncLocal→static attempt that caused ~48 races/run in Sdk.Tests.
Full Changelog: v2026.3.701...v2026.3.708
ClaudeForge 2026.3.701
Downloads
| Platform | Architecture | File |
|---|---|---|
| Windows | x64 | ClaudeForge-win-x64.zip |
| Windows | ARM64 | ClaudeForge-win-arm64.zip |
| Linux | x64 | ClaudeForge-linux-x64.tar.gz |
| Linux | ARM64 | ClaudeForge-linux-arm64.tar.gz |
| macOS (Intel) | x64 | ClaudeForge-osx-x64.tar.gz |
| macOS (Apple Silicon) | ARM64 | ClaudeForge-osx-arm64.tar.gz |
The version (2026.3.701) is encoded in the release tag rather than in
the archive filenames — publish.ps1 produces unversioned artefact names
so local dev builds and CI builds share one filename pattern.
Linux: Extract, then run the bundled linux-setup.sh to install a per-user .desktop entry so Wayland compositors render the window icon correctly:
tar -xzf ClaudeForge-linux-x64.tar.gz -C ~/ClaudeForge
cd ~/ClaudeForge
./linux-setup.sh
./ClaudeForgemacOS: The binary is unsigned. Use the bundled allow-app-to-run.sh to strip the Gatekeeper quarantine xattr from every file in the extracted directory:
tar -xzf ClaudeForge-osx-arm64.tar.gz -C ~/ClaudeForge
cd ~/ClaudeForge
./allow-app-to-run.sh
./ClaudeForgeWhat's Changed
- Added buttons to the UI on 'memory artifact' list views that allow for direct 'deletion' of those items
- Updated the 'model list' overlay for the currently supported Claude models (including the just-released Sonnet 5)
ClaudeForge 2026.2.615
Downloads
| Platform | Architecture | File |
|---|---|---|
| Windows | x64 | ClaudeForge-win-x64.zip |
| Windows | ARM64 | ClaudeForge-win-arm64.zip |
| Linux | x64 | ClaudeForge-linux-x64.tar.gz |
| Linux | ARM64 | ClaudeForge-linux-arm64.tar.gz |
| macOS (Intel) | x64 | ClaudeForge-osx-x64.tar.gz |
| macOS (Apple Silicon) | ARM64 | ClaudeForge-osx-arm64.tar.gz |
The version (2026.2.615) is encoded in the release tag rather than in
the archive filenames — publish.ps1 produces unversioned artefact names
so local dev builds and CI builds share one filename pattern.
Linux: Extract, then run the bundled linux-setup.sh to install a per-user .desktop entry so Wayland compositors render the window icon correctly:
tar -xzf ClaudeForge-linux-x64.tar.gz -C ~/ClaudeForge
cd ~/ClaudeForge
./linux-setup.sh
./ClaudeForgemacOS: The binary is unsigned. Use the bundled allow-app-to-run.sh to strip the Gatekeeper quarantine xattr from every file in the extracted directory:
tar -xzf ClaudeForge-osx-arm64.tar.gz -C ~/ClaudeForge
cd ~/ClaudeForge
./allow-app-to-run.sh
./ClaudeForgeWhat's Changed
Added
- Plugin Hooks tab (Hooks page) — read-only view of hooks contributed by installed plugins, with one-click copy into
settings.json(routed through the normal add path; copy is disabled for eventssettings.jsoncan't express). Hooks are organized into per-plugin accordions, and within a plugin an event with multiple hooks gets its own nested event accordion (a lone hook renders inline). Theme-aware styling; the command shows in a reusable read-only/copyable text box. —d20a2d5,ff9ae5a - Model picker — per-value hover tooltips explaining each option (
best,opusplan, the[1m]extended-context variants, alias vs pinned ID) and newest→oldest ordering with each[1m]variant above its base alias. Both fully data-driven. —5c43950,1d2e8fe
Changed
- Permission builder hints — dropped the Wildcards/Anchors segmented toggle; both groups now show at once, stacked under sub-labels, and every tool's hint box gets a "Hints" caption. —
ae6d322 - Editor view-models are now UI-free — extracted into dedicated projects with no Avalonia dependency, so a view-model physically can't reference a UI control (compile-time enforced). —
c609cee,d20a2d5 - Removed the "[Experimental]" tag from the dry-run tester labels. —
e21f660
Fixed
- Windows drive-letter permission rules now match.
Read(//C:/c/cl/**)previously matched nothing (drive-case mismatch in the//-anchored resolver). The guided builder now canonicalizesC:\c\cl→//c/c/cland flags invalid wildcard drives (?:/*:). —704cfc0,d20a2d5 - Restore no longer crashes on an invalid bundled schema — a valid-JSON-but-invalid-JSON-Schema entry in a backup is skipped instead of aborting the whole restore. —
0f8e417 - Plugin Hooks dark-theme washout — disabled plugins use a muted header instead of a 55%-opacity row, so text, accent, and chips stay full-contrast. —
ff9ae5a
Performance
- Non-freezing startup — settings editors (every group + child property editor) build off the UI thread; the window paints the Welcome page immediately while the sidebar fills in. —
fe043e5
Internal / Tests
- Guard test that the full editor set constructs off the UI thread (startup offload path). —
83191dd - New coverage: plugin-hook discovery/editor/accordion grouping, permission matcher + guided builder, Windows-drive idioms, restore-with-bad-schema. —
d20a2d5,704cfc0,0f8e417,ff9ae5a
ClaudeForge 2026.2.612
Downloads
| Platform | Architecture | File |
|---|---|---|
| Windows | x64 | ClaudeForge-win-x64.zip |
| Windows | ARM64 | ClaudeForge-win-arm64.zip |
| Linux | x64 | ClaudeForge-linux-x64.tar.gz |
| Linux | ARM64 | ClaudeForge-linux-arm64.tar.gz |
| macOS (Intel) | x64 | ClaudeForge-osx-x64.tar.gz |
| macOS (Apple Silicon) | ARM64 | ClaudeForge-osx-arm64.tar.gz |
Linux: Extract, then run the bundled linux-setup.sh to install a per-user .desktop entry so Wayland compositors render the window icon correctly:
tar -xzf ClaudeForge-linux-x64.tar.gz -C ~/ClaudeForge
cd ~/ClaudeForge
./linux-setup.sh
./ClaudeForgemacOS: The binary is unsigned. Use the bundled allow-app-to-run.sh to strip the Gatekeeper quarantine xattr from every file in the extracted directory:
tar -xzf ClaudeForge-osx-arm64.tar.gz -C ~/ClaudeForge
cd ~/ClaudeForge
./allow-app-to-run.sh
./ClaudeForgeAdded
- Permissions tabs — the single Permissions editor is now a set of sibling tabs contributed by
ClaudeGroupTabCustomizer: Overview (rule-syntax explainer, the "How permission rules work" accordion, thedefaultModeselector with its contextual banners, and an Advanced accordion fordisableBypassPermissionsMode+additionalDirectories), Common, Build, and Lists. Overview is the default landing tab; all tabs bind to onePermissionsEditorViewModel, so the header and every activity tab share a single source of truth. - Common tab — one-click taxonomy presets — a curated catalog of common actions grouped per tool (File, Bash, PowerShell, Web, …) and ordered safe-first. Each row carries a
Read/Write/Network/Destructivechiclet and an Allow / Deny / Ask button, so granting or blocking a typical action is a single click instead of hand-typed syntax. A Windows hint points at the WSL group; an empty state appears once everything is already configured. - Build tab — guided rule builder — pick a tool family, fill the one field that matters (command, path, domain, MCP server, or agent), toggle prefix-match (
*) or recursive as appropriate, and watch a live preview of the emitted rule plus a plain-English gloss. The builder emits only syntax that satisfiesPermissionRule.TryParse, so it cannot produce a shape-invalid rule. A file/folder picker backs path tools; an MCP server dropdown backsmcp__rules. - Build tab — dry-run permission tester — a "Test this rule" bridge seeds the tester from the builder's current inputs and expands it; the tester simulates a candidate operation against the full Allow/Deny/Ask ruleset and reports the resulting decision, so you can confirm a rule does what you intended before saving.
- Permission matching engine (SDK) — new
Permissions/Matchinglayer powering the builder, tester, and collision detection:PermissionRule.TryParse/ParsedPermissionRule, per-tool matchers (BashCommandSplitter+BashRuleMatcher,PathRuleMatcher,McpRuleMatcher,WebFetchRuleMatcher,AgentRuleMatcher,BareToolMatcher), and aPermissionResolver/PermissionCollisionDetectorthat produce a precedence-awarePermissionDecision. - Automatic conflict resolution — adding a rule now prunes an identical lower-precedence rule from another bucket, or is skipped when a higher-precedence bucket already covers it, with the action explained inline (
ConflictResolutionMessage). - Schema-coverage guarantee — the permissions editor renders every key in the permissions schema. Keys with a bespoke control are declared in
CoveredKeys; any other schema key (e.g.disableAutoMode) is auto-surfaced through the generic editor factory and rendered in place on Advanced — fixing a class of silent drop-bugs where an unhandled key round-tripped but was uneditable. Config shapes the typed editors can't represent are preserved as editable raw JSON and recorded once to the log (UnsupportedShapeSink) rather than lost. - Default Mode safety rails — the
defaultModeselector shows each mode's description and a screen-reader-friendly name; selectingbypassPermissionsraises a red danger banner;autois gated to auto-capable models at User scope (ineligible selections coerce todefaultwith an advisory); and "danger"/"bypass" searches deep-link here with a contextual hint clarifying that--dangerouslySkipPermissionshas no config key butbypassPermissionsis equivalent. - Model catalog — a single bundled source of truth
(src/ClaudeForge.Core/Assets/ModelCatalog/model-catalog.json) for the allowed
model/effortLevel/permissions.defaultModevalues and their
inter-relationships, replacing several hardcoded lists. Surfaced through the
new SDK accessorIClaudeConfigClient.Models(IModelCatalogAccessor); the
curated file is overlay-able (model-catalog.overlay.json, RFC 7396) and
validated byscripts/validate-model-catalog.ps1+
.github/workflows/model-catalog-refresh.yml. - Model-aware effort & mode editors — the Essentials effort dropdown now
shows only the levels the selected model supports; an invalidated effort
auto-coerces to the nearest analog (e.g.max/xhigh→highon Sonnet 4.6)
as an editing-scope override, surfaced in the Save preview. A model with no
effort (Haiku) disables the control.permissions.defaultMode = autois gated
to auto-capable models at User scope, with the option filtered out and an
ineligible selection coerced todefault. A read-only "current model —
supports …" indicator sits beside the effort editor. - Editable model field — the Essentials model card is now a free-form
AutoCompleteBox (catalog entries are suggestions; any custom id can be typed). bypassPermissionssearch shortcut — typing "bypass" deep-links to the
Default Mode editor with a hint, distinct from the--dangerouslySkipPermissions
flag result and the "disable bypass" card.- Dynamic-access tripwire — the build-time dead-string guard now also fails
the build on by-name/reflective resource access (Strings.ResourceManager,
typeof(Strings)) in project source, keeping its literal-Strings.<Key>
analysis sound.
Changed
- Lists tab is now one surface among several, not the whole page — the original free-text Allow / Deny / Ask lists survive on the Lists tab for direct/bulk editing, with inline schema validation (red outline + explanation), per-list counts, and worked examples. Rules added from Common or Build land in these same lists.
- Permissions editing was hardened against emitting no-op ("ghost") config changes from UI controls, so the Save preview reflects only real edits.
model/effortLevel/permissions.defaultModeoption lists are now
catalog-driven and inter-aware rather than hardcoded.- Fixed 'missing files' that originate in the 'selected project' tree during backup scenarios
- Newly available localizations
ClaudeForge 2026.2.528
Downloads
| Platform | Architecture | File |
|---|---|---|
| Windows | x64 | ClaudeForge-win-x64.zip |
| Windows | ARM64 | ClaudeForge-win-arm64.zip |
| Linux | x64 | ClaudeForge-linux-x64.tar.gz |
| Linux | ARM64 | ClaudeForge-linux-arm64.tar.gz |
| macOS (Intel) | x64 | ClaudeForge-osx-x64.tar.gz |
| macOS (Apple Silicon) | ARM64 | ClaudeForge-osx-arm64.tar.gz |
The version (2026.2.528) is encoded in the release tag rather than in
the archive filenames — publish.ps1 produces unversioned artefact names
so local dev builds and CI builds share one filename pattern.
Linux: Extract, then run the bundled linux-setup.sh to install a per-user .desktop entry so Wayland compositors render the window icon correctly:
tar -xzf ClaudeForge-linux-x64.tar.gz -C ~/ClaudeForge
cd ~/ClaudeForge
./linux-setup.sh
./ClaudeForgemacOS: The binary is unsigned. Use the bundled allow-app-to-run.sh to strip the Gatekeeper quarantine xattr from every file in the extracted directory:
tar -xzf ClaudeForge-osx-arm64.tar.gz -C ~/ClaudeForge
cd ~/ClaudeForge
./allow-app-to-run.sh
./ClaudeForgeWhat's Changed
- Fixed 'missing files' that originate in the 'selected project' tree during backup scenarios
- Added new localizations
ClaudeForge 2026.2.527
Downloads
| Platform | Architecture | File |
|---|---|---|
| Windows | x64 | ClaudeForge-win-x64.zip |
| Windows | ARM64 | ClaudeForge-win-arm64.zip |
| Linux | x64 | ClaudeForge-linux-x64.tar.gz |
| Linux | ARM64 | ClaudeForge-linux-arm64.tar.gz |
| macOS (Intel) | x64 | ClaudeForge-osx-x64.tar.gz |
| macOS (Apple Silicon) | ARM64 | ClaudeForge-osx-arm64.tar.gz |
The version (2026.2.527) is encoded in the release tag rather than in
the archive filenames — publish.ps1 produces unversioned artefact names
so local dev builds and CI builds share one filename pattern.
Linux: Extract, then run the bundled linux-setup.sh to install a per-user .desktop entry so Wayland compositors render the window icon correctly:
tar -xzf ClaudeForge-linux-x64.tar.gz -C ~/ClaudeForge
cd ~/ClaudeForge
./linux-setup.sh
./ClaudeForgemacOS: The binary is unsigned. Use the bundled allow-app-to-run.sh to strip the Gatekeeper quarantine xattr from every file in the extracted directory:
tar -xzf ClaudeForge-osx-arm64.tar.gz -C ~/ClaudeForge
cd ~/ClaudeForge
./allow-app-to-run.sh
./ClaudeForgeWhat's Changed
Agent & Skills page + bug fixes
Added - Scope-aware agent/skill/command discovery
Added - Agents & Skills page with basic viewing and front-matter editing experiences
Improved - perf via de-bouncing saves for some scenarios
Fixed - ObjectDisposedException + binding null-traversal warnings
Fixed - Agents/skills editor bugs
Fixed - Binding noise in hooks/MCP/permissions editors
Fixed - Essentials SetValue scope consistency
Fixed - Inherited-display row showing Dictionary toString
ClaudeForge 2026.2.523
Downloads
| Platform | Architecture | File |
|---|---|---|
| Windows | x64 | ClaudeForge-win-x64.zip |
| Windows | ARM64 | ClaudeForge-win-arm64.zip |
| Linux | x64 | ClaudeForge-linux-x64.tar.gz |
| Linux | ARM64 | ClaudeForge-linux-arm64.tar.gz |
| macOS (Intel) | x64 | ClaudeForge-osx-x64.tar.gz |
| macOS (Apple Silicon) | ARM64 | ClaudeForge-osx-arm64.tar.gz |
The version (2026.2.523) is encoded in the release tag rather than in
the archive filenames — publish.ps1 produces unversioned artefact names
so local dev builds and CI builds share one filename pattern.
Linux: Extract, then run the bundled linux-setup.sh to install a per-user .desktop entry so Wayland compositors render the window icon correctly:
tar -xzf ClaudeForge-linux-x64.tar.gz -C ~/ClaudeForge
cd ~/ClaudeForge
./linux-setup.sh
./ClaudeForgemacOS: The binary is unsigned. Use the bundled allow-app-to-run.sh to strip the Gatekeeper quarantine xattr from every file in the extracted directory:
tar -xzf ClaudeForge-osx-arm64.tar.gz -C ~/ClaudeForge
cd ~/ClaudeForge
./allow-app-to-run.sh
./ClaudeForge