Collaboration is at the heart of modern software development. When multiple engineers work together on a feature or release, it’s common to build on top of each other’s work. But with that flexibility comes risk: accidentally changing a teammate’s branch that is supposed to remain untouched.

With gt version 1.7.0, we’re introducing a new way to collaborate with confidence: frozen branches.

A frozen branch is a branch that stays up to date with remote changes but blocks local edits. This ensures you can safely pull down and build on a coworker’s branch without worrying about accidentally modifying their work.

Think of it as read-only mode for branches. It's perfect for when you want visibility and stability without the risk of stepping on toes.

  • Automatic freezing with gt get

    When you use gt get to pull down a new branch, it will now be marked as frozen by default. If you’d prefer an editable version, you can pass the --unfrozen flag.

  • Manually freeze or unfreeze

    Use gt freeze and gt unfreeze at any time to toggle a branch’s frozen state.

  • Check branch status

    Not sure if a branch is frozen? Commands like gt info and gt log clearly display the status.

Get my coworkers branch:

Terminal
$ gt get 1646
🌲 Fetching branches from remote...
Running git fetch: [========================================] 100% | Done
main is up to date.
🔄 Syncing branches...
Synced add-api-branch (PR #1646 v1) from remote.
Checked out add-api-branch.
Branch add-api-branch was retrieved in 'frozen' mode, making it uneditable. Use `gt unfreeze` to make it editable.

Check the status:

Terminal
$ gt info
add-api-branch (frozen)
3 minutes ago
PR #1646 add important api
https://app.stg.graphite.dev/github/pr/my-org/my-repo/1646
Last submitted version: v1
Parent: main
commit ea6404a74ddb0d9599cefa4d027d064916a58c9f
Author: My coworker <coworker@company.com>
Date: Wed Sep 3 13:29:49 2025 -0400
Add important API to the codebase

Modification via gt will be blocked:

Terminal
$ echo hello > world.txt
$ gt modify --all
ERROR: Cannot perform this operation on frozen branch add-api-branch. You
can unfreeze it with gt unfreeze add-api-branch.

Including restack and sync:

Terminal
$ gt restack
Did not restack branch add-api-branch because it is frozen.

But new branches can be built on top of it:

Terminal
$ gt create --all --message "new feature using the api"
1 file changed, 1 insertion(+)
create mode 100644 change.txt
$ gt ls
◉ new_feature_using_the_api
◯ add-api-branch (frozen)
◯ main

Remote changes can still be retrieved via gt sync or gt get:

Terminal
$ gt sync
🌲 Fetching branches from remote...
Running git fetch: [========================================] 100% | Done
main is up to date.
🔄 Syncing branches...
Synced add-api-branch (PR #1645 v2) from remote (previously at 67a46fa0ff938e647595780c8ac3185d44b7644c).
🥞 Restacking branches...
add-api-branch does not need to be restacked on main.
Restacked new_feature_using_the_api on add-api-branch.

Frozen branches give teams more confidence when stacking work across multiple contributors. With frozen branches, you can:

  • Build faster: Start stacking new changes on a coworker’s branch without hesitation.

  • Avoid mistakes: Protect against accidental edits that can cause merge conflicts or overwrite someone else’s progress.

  • Stay aligned: Always pull the latest updates while keeping the original branch safe.

By making collaboration safer and smoother, frozen branches reduce the friction of shared development workflows.

Upgrade to gt version 1.7.0 to start using frozen branches. Try it out the next time you pull down a teammate’s branch, and experience safer, more reliable collaboration.

👉 Run gt get <branch> and see it in action.

Built for the world's fastest engineering teams, now available for everyone