I spend too much time switching between my terminal and Linear’s web app. The Linear CLI lets me manage tickets without leaving my editor. Here’s how I use it.
Installation Link to heading
Install via Homebrew:
brew install schpet/tap/linear
Authenticate (opens browser for OAuth):
linear config
This creates ~/.config/linear/config.json with your API token and default team/workspace.
My ticket workflow Link to heading
Here’s how I work with Linear tickets day-to-day:
1. Check what I’m working on:
linear issue list --assignee @me --status "In Progress"
I have this aliased to lme in my shell.
2. Start a new ticket:
linear issue start
This does three things:
- Prompts me to select a ticket from my assigned issues
- Moves it to “In Progress”
- Creates a git branch with the ticket ID (e.g.,
CET-123-fix-auth-bug)
I love this feature. It keeps my branches consistent and links them to tickets automatically.
3. View ticket details:
linear issue view CET-123
Shows the full description, comments, and status in my terminal. If I need the web view:
linear issue view CET-123 --web
4. Update status:
linear issue status CET-123 "Done"
5. Search tickets:
linear issue list --query "authentication"
Team management Link to heading
Show current team:
linear team
# Shows: Cetus (CET)
Switch teams:
linear config
# Select different default team
CLI vs web interface Link to heading
Both have their place:
CLI for:
- Checking my assigned tickets (faster than loading the web app)
- Creating git branches from tickets (
linear issue start) - Quick status updates
- Searching tickets by keyword
- When I’m already in the terminal
Web for:
- Creating new tickets (richer editor, can add links/images easily)
- Reading long descriptions or comment threads
- Triaging the team backlog
- Using keyboard shortcuts for bulk operations
- Reviewing roadmaps and cycle planning
The web interface is more powerful, but the CLI is faster for routine tasks. I probably use the CLI for 60% of my Linear interactions now.
My shell functions Link to heading
I’ve wrapped some common commands in shell functions (in ~/.zshrc):
# List my tickets
alias lme="linear issue list --assignee @me"
# List my in-progress tickets
alias lmi="linear issue list --assignee @me --status 'In Progress'"
# Create a new ticket in Cetus team
function lnew() {
linear issue create --team CET --title "$1"
}
# Quick view ticket
function lv() {
linear issue view "$1"
}
Usage:
lme # What am I working on?
lnew "Fix auth timeout" # Create ticket
lv CET-123 # View ticket
Gotchas Link to heading
Git branch naming: linear issue start creates branches, but if you’re in a dirty working tree, it will fail. Stash or commit first.
Authentication token: If you work on multiple machines, you’ll need to run linear config on each. The token is stored locally.
Team context: The CLI uses your default team from the config. If you work across teams, you’ll need to specify --team or change your default frequently.
Further reading Link to heading
- Linear CLI documentation
- Linear API documentation
- Linear keyboard shortcuts (for when you do use the web)