Skip to content

Releases: JanusMael/ClaudeForge

ClaudeForge 2026.3.724

Choose a tag to compare

@github-actions github-actions released this 24 Jul 21:03

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
./ClaudeForge

macOS: 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

Added

  • Claude Opus 5 in the model picker. The opus alias 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-scope settings.json, mcp.json,
    managed-settings.json (and its managed-settings.d/*.json drop-ins) and
    ~/.claude.json, plus the open project's settings.json, settings.local.json,
    and mcp.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 external settings.json edit 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.

ClaudeForge 2026.3.715

Choose a tag to compare

@github-actions github-actions released this 15 Jul 19:41

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
./ClaudeForge

macOS: 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
    subclassed AutoCompleteBox takes its own type as style key, so it matched no
    ControlTheme and 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's Styles apply to descendants, not itself), and the element also set
    BorderBrush as 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=T and [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's Styles apply 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; ItemFilter supersedes
    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

Choose a tag to compare

@github-actions github-actions released this 10 Jul 15:05

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
./ClaudeForge

macOS: 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

What'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

Choose a tag to compare

@github-actions github-actions released this 08 Jul 13:52

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
./ClaudeForge

macOS: 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

What'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 types HookEventInfo / HookEventCatalog / HookCommandVariantInfo; SchemaRegistry gained GetHookEvents / GetHookCommandVariants; killed the hardcoded CommandTypeInfos mirror.
  • Bug fixed: event descriptions never rendered in the app — the GUI builds its client via FromExistingWorkspace (no OpenAsync), so SchemaHookEvents() 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 the IGroupTabCustomizer mechanism (now threads a SelectTab deep‑link callback).
  • Added Svg.Controls.Skia.Avalonia 12.0.0.13 (+ Svg.Skia → 5.1.1) for a native <svg:Svg> control; new HooksFlowView with 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 HeaderAction slot on the base PropertyEditorViewModel (compiled‑bound, reusable by any editor).

Model catalog / effort levels

  • Refreshed schema narrowed the settings‑file effortLevel to [low, medium, high, xhigh] (max/ultracode are session‑only); fixed the parity test.
  • Added ultracode as 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.json from schemastore.org to current (+~1,200 lines)

Test infra

  • Fixed the order‑dependent flake DeleteFootprintAsync_NoDialogService_DeletesImmediately: the AsyncLocal test‑home override didn't propagate from the sync [TestInitialize] into the async test's Task.Run (which reads ClaudeHome on a pool thread), so it deleted from the wrong home. Re‑asserted the override in NewFakeClient(); kept AsyncLocal (Sdk.Tests runs parallel and needs it). Backed out an AsyncLocal→static attempt that caused ~48 races/run in Sdk.Tests.

Full Changelog: v2026.3.701...v2026.3.708

ClaudeForge 2026.3.701

Choose a tag to compare

@github-actions github-actions released this 01 Jul 13:41

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
./ClaudeForge

macOS: 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

What'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

Choose a tag to compare

@github-actions github-actions released this 15 Jun 18:04

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
./ClaudeForge

macOS: 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

What'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 events settings.json can'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 canonicalizes C:\c\cl//c/c/cl and 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

Choose a tag to compare

@github-actions github-actions released this 12 Jun 20:03

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
./ClaudeForge

macOS: 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

Added

  • 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, the defaultMode selector with its contextual banners, and an Advanced accordion for disableBypassPermissionsMode + additionalDirectories), Common, Build, and Lists. Overview is the default landing tab; all tabs bind to one PermissionsEditorViewModel, 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 / Destructive chiclet 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 satisfies PermissionRule.TryParse, so it cannot produce a shape-invalid rule. A file/folder picker backs path tools; an MCP server dropdown backs mcp__ 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/Matching layer powering the builder, tester, and collision detection: PermissionRule.TryParse / ParsedPermissionRule, per-tool matchers (BashCommandSplitter + BashRuleMatcher, PathRuleMatcher, McpRuleMatcher, WebFetchRuleMatcher, AgentRuleMatcher, BareToolMatcher), and a PermissionResolver / PermissionCollisionDetector that produce a precedence-aware PermissionDecision.
  • 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 defaultMode selector shows each mode's description and a screen-reader-friendly name; selecting bypassPermissions raises a red danger banner; auto is gated to auto-capable models at User scope (ineligible selections coerce to default with an advisory); and "danger"/"bypass" searches deep-link here with a contextual hint clarifying that --dangerouslySkipPermissions has no config key but bypassPermissions is equivalent.
  • Model catalog — a single bundled source of truth
    (src/ClaudeForge.Core/Assets/ModelCatalog/model-catalog.json) for the allowed
    model / effortLevel / permissions.defaultMode values and their
    inter-relationships, replacing several hardcoded lists. Surfaced through the
    new SDK accessor IClaudeConfigClient.Models (IModelCatalogAccessor); the
    curated file is overlay-able (model-catalog.overlay.json, RFC 7396) and
    validated by scripts/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/xhighhigh on Sonnet 4.6)
    as an editing-scope override, surfaced in the Save preview. A model with no
    effort (Haiku) disables the control. permissions.defaultMode = auto is gated
    to auto-capable models at User scope, with the option filtered out and an
    ineligible selection coerced to default. 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).
  • bypassPermissions search 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.defaultMode option 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

Choose a tag to compare

@github-actions github-actions released this 28 May 19:49

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
./ClaudeForge

macOS: 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

What's Changed

  • Fixed 'missing files' that originate in the 'selected project' tree during backup scenarios
  • Added new localizations

ClaudeForge 2026.2.527

Choose a tag to compare

@github-actions github-actions released this 27 May 13:45
ba5902c

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
./ClaudeForge

macOS: 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

What'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

Choose a tag to compare

@github-actions github-actions released this 22 May 19:39

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
./ClaudeForge

macOS: 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