CLI for Linear. List, create, update, and comment on issues. Multi-team, filtered queries, search.
# My assigned issues
linearcli issues --assignee me --fields identifier,title,state,priority --limit 10
# Get a specific issue with comments
linearcli issue ENG-123 --comments
# Create an issue via JSON
linearcli create --json '{"title":"Fix auth bug","team":"ENG","priority":2}' --dry-run
# Search
linearcli search "authentication" --limit 5
# Schema introspection
linearcli schema- Always use
--fieldson list commands. Default includes all fields which wastes tokens. Use--fields identifier,title,state,assigneefor triage. - Always use
--dry-runbefore create/update/comment. Validates inputs without side effects. - Always use
--jsonfor writes. Avoids shell escaping issues. - Use
--assignee meto filter to the current user's issues. - Use
--teamto scope to a specific team (e.g.--team ENG). - All output is JSON with
{ok, data, error, command}envelope. - Issue identifiers use the format
TEAM-123(e.g.ENG-42). Always read them from a query first.
0— No priority1— Urgent2— High3— Medium4— Low
linearcli issues --assignee me --state "In Progress" --fields identifier,title,priority,dueDatelinearcli create --json '{"title":"Fix login redirect","team":"ENG","priority":2,"description":"Users get 404 after OAuth callback"}'linearcli comment ENG-123 --json '{"body":"Fixed in PR #42, ready for review"}'linearcli issues --team ENG --state "In Progress" --fields identifier,title,assigneeAvailable for --fields: id, identifier, title, state, priority, priorityLabel, assignee, team, project, labels, estimate, dueDate, createdAt, updatedAt, url