I found a useful Git one liner buried in leaked CIA developer docs

Published: (February 20, 2026 at 09:03 AM EST)
2 min read

Source: Hacker News

In 2017, WikiLeaks published Vault 7—a large cache of CIA hacking tools and internal documents. Buried among the exploits and surveillance tools was something far more mundane: a page of internal developer documentation with Git tips and tricks link.

Most of it is fairly standard stuff—amending commits, stashing changes, using bisect. But one tip has lived in my ~/.zshrc ever since.

The Problem

Over time, a local Git repository accumulates stale branches. Every feature branch, hotfix, and experiment you’ve ever merged sits there doing nothing. git branch starts to look like a graveyard.

You can list merged branches with:

git branch --merged

But deleting them one by one is tedious. The CIA’s dev team has a cleaner solution:

The original command

git branch --merged | grep -v "\*\|master" | xargs -n 1 git branch -d

How it works

  • git branch --merged — lists all local branches that have already been merged into the current branch.
  • grep -v "\*\|master" — filters out the current branch (*) and master so you don’t delete either.
  • xargs -n 1 git branch -d — deletes each remaining branch one at a time, safely (lowercase -d won’t touch unmerged branches).

The updated command

Since most projects now use main instead of master, you can update the command and exclude any other branches you frequently use:

git branch --merged origin/main | grep -vE "^\s*(\*|main|develop)" | xargs -n 1 git branch -d

Run this from main after a deployment and your branch list goes from dozens of entries back down to a handful.

I keep this as a Git alias so I don’t have to remember the syntax:

alias ciaclean='git branch --merged origin/main | grep -vE "^\s*(\*|main|develop)" | xargs -n 1 git branch -d'

Then in your repo just run:

ciaclean

A small thing, but one of those commands that quietly saves a few minutes every week and keeps the repository tidy.

0 views
Back to Blog

Related posts

Read more »