release/0.20.0

cjpais/Handyrelease/0.20.0Jun 3, 2026by krlvi

AI Summary

GitButler introduces support for AI agents via the `but` CLI and skill, removes the in-app Claude Code GUI, and improves CLI/TUI performance and reliability.

Key Highlights

  • GitButler for AI agents via `but` CLI and agent skill
  • Removed in-app GUI for Claude Code (superseded by `but` skill)
  • Improved commit squashing performance
  • New CLI commands for GUI and confirmation prompts

Breaking Changes

  • Removed in-app GUI for Claude Code (superseded by the `but` skill & workflow for agentic use)

New Features

  • AI Agent integration with `but` CLI
  • CLI theme support via `BUT_THEME` environment variable
  • TUI improvements: discard commits, delete non-empty branches, copy diff content
  • Bug fixes for Gerrit, deep links, and branch creation

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/