release/0.20.0

daijro/camoufoxrelease/0.20.0Jun 3, 2026by krlvi

AI Summary

GitButler 0.20.0 introduces native support for AI agents via the CLI, removing the previous in-app Claude Code GUI. It also includes significant performance improvements and stability fixes for the CLI and TUI.

Key Highlights

  • GitButler for AI agents: use 'but' CLI directly for coding tasks
  • Removed in-app GUI for Claude Code (superseded by agent workflows)
  • Significant performance improvements for 'but branch [list]' and commit squashing
  • CLI theme support via 'BUT_THEME' environment variable

Breaking Changes

  • Removed in-app GUI for Claude Code

New Features

  • AI Agent integration via 'but' CLI and skill
  • CLI theme customization (dark/light)
  • Copy content of diffs with Shift+C in TUI
  • Discard multiple commits at once in TUI

Full Release Notes

## GitButler for AI agents

GitButler can now be used directly by your coding agent via the `but` CLI and the agent skill.
Multiple agent session can use the `but` CLI to work in parallel or stacked, branch & commit, clean up history etc.
Check the [AI Agents](https://docs.gitbutler.com/ai-agents/overview) docs for how to set it up and tune the behavior to your liking.

## Changes

- Removed in-app GUI for Claude Code (superseded by the `but` skill & workflow for agentic use)
- Fixes a bug with in-app deep links
- Fixes a Gerrit specific bug with push destination output
- Improved the performance and reliability of commit squashing
- Fixes a bug where branch creation fails with "Branch cannot be created: target commit already belongs to another branch"
- It is now possible to discard commits that are in a conflicted state

## CLI

- The 'theme' of the CLI can now be set via the `BUT_THEME` environment variable (dark/light)
- Improved error handling and display on bad user input
- Significant performance improvements for `but branch [list]`
- Fixes a bug where global flags did not work with aliases
- `but branch new` now validates the provided name and fails instead of normalizing it
- `but reword <branch>` now validates the provided name and fails instead of normalizing it
- `but gui <path>` replaces `but .` for opening a directory in the GUI
- `but gui -n <path>` allows opening the GUI in a new window
- `but unapply` no longer prompts for confirmation
- `but oplog restore` no longer prompts for confirmation
- `but branch delete` no longer prompts for confirmation

## TUI

- It is now easier to create a new branch from unassigned files
- Adds the ability to discard multiple commits at once
- You can now delete non-empty branches
- You can now copy the content of diffs with Shift+C
- Fixes a bug where moved files could not be committed

## New Contributors
* @mturac made their first contribution in https://github.com/gitbutlerapp/gitbutler/pull/13848

**Full Changelog**: https://github.com/gitbutlerapp/gitbutler/compare/release/0.19.13...release/0.20.0

## Downloads
Download bins from https://gitbutler.com/