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.
What are 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.
How it works
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
andgt 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
andgt log
clearly display the status.
Examples of frozen branches
Get my coworkers branch:
$ gt get 1646🌲 Fetching branches from remote...Running git fetch: [========================================] 100% | Donemain 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:
$ gt infoadd-api-branch (frozen)3 minutes agoPR #1646 add important apihttps://app.stg.graphite.dev/github/pr/my-org/my-repo/1646Last submitted version: v1Parent: maincommit ea6404a74ddb0d9599cefa4d027d064916a58c9fAuthor: My coworker <coworker@company.com>Date: Wed Sep 3 13:29:49 2025 -0400Add important API to the codebase
Modification via gt
will be blocked:
$ echo hello > world.txt$ gt modify --allERROR: Cannot perform this operation on frozen branch add-api-branch. Youcan unfreeze it with gt unfreeze add-api-branch.
Including restack and sync:
$ gt restackDid not restack branch add-api-branch because it is frozen.
But new branches can be built on top of it:
$ 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
:
$ gt sync🌲 Fetching branches from remote...Running git fetch: [========================================] 100% | Donemain 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.
Why this matters
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.
Get started today
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.