The Thicket CLI
Install the thicket command, sign in through your browser, and work with projects, to-dos, and messages from a terminal or an AI coding agent.
The Thicket CLI is the official command-line tool for Thicket. Use it in a terminal, in scripts, or through an AI coding agent such as Claude Code, which can run commands for you. It works with your projects, to-dos, messages, docs and files, boards, chat, search, reports, notifications, and cheers, all as you. It's open source, at github.com/thicket-hq/thicket-cli.
What you need
- Node.js 20 or newer
- A Thicket account, on any plan
Install it
npm install -g thicket-cli
The command it installs is thicket. To try it without installing, run npx thicket-cli instead.
Sign in
thicket auth login
The CLI opens Thicket in your browser, or prints a link if it cannot open one. Sign in if needed, review the requested access, and approve the connection. Your password never passes through the CLI.
Approval creates an OAuth connection listed under My settings > Connected apps. The CLI stores credentials in the macOS Keychain or Linux Secret Service, with a private file fallback. Short-lived access tokens refresh automatically.
- Read-and-write access is the default, shown before approval. Use
thicket auth login --scope readto request read-only access. thicket auth statusshows who you are connected as.thicket auth logoutdisconnects an OAuth connection and removes its stored credentials. You can also disconnect from My settings > Connected apps.- No browser available? Create a personal token in My settings > API tokens, then pipe it in:
printf '%s' "$THICKET_TOKEN" | thicket auth login --with-token. Signing out removes that token locally; revoke it in API tokens to end its access. - Several organizations? Pass
--orgwith the organization slug, or save a default withthicket orgs use <slug>.
Everyday commands
thicket projects # list your projects
thicket todos --in "Website Redesign" # a project's open to-dos
thicket todo "Send the preview" --in "Website Redesign" --due friday --assignee me
thicket done <id> # complete a to-do
thicket message "Weekly update" --content "All **green** this week." --in "Website Redesign"
thicket comment <id> "Looks good, @Priya" # comment on anything
thicket search "launch checklist" # search every project
thicket assignments # your open work
thicket inbox --unread # your notifications
A few things make these quicker:
- Projects, lists, and people can be named instead of looked up by id. If a name matches more than one thing, the CLI lists the choices.
- Anywhere an id is expected, you can paste the item's link from your browser instead.
- Dates accept plain words such as "tomorrow", "friday", or "next monday".
- Message and comment text is Markdown, and @ followed by a name mentions that person.
thicket commandslists every command, and adding--helpto any command explains it.
Use it with Claude Code and other AI agents
Any AI agent that can run shell commands can use the CLI. For Claude Code, install the Thicket plugin:
thicket setup claude
claude plugin marketplace add thicket-hq/thicket-cli
claude plugin install thicket@thicket-hq
thicket setup claude installs two skills that teach Claude how to use Thicket, and the plugin adds a line at the start of each Claude Code session saying who is signed in. Then ask in plain words, for example "What's overdue in Website Redesign?" or "Turn these meeting notes into to-dos in the Launch list". Claude runs thicket commands to do it. Approve read-and-write access when the agent needs to make changes.
For Cursor, Codex, and other agents, thicket skill prints the same instructions to add to that agent's setup. The repository's install guide covers each one.
Your coding agent uses your CLI connection and works with your permissions. See Connect an AI Agent.
Output for scripts
In a terminal the CLI prints readable, formatted output. When its output is piped to another program, it switches to JSON. You can also choose:
--jsonfor the full JSON response--quietfor the data alone--ids-onlyfor one id per line, or--countfor a number--jqwith a filter, to pick values out of the JSON
Errors come back as JSON too, with a stable exit code for each kind of failure, so a script can tell a missing item from a network problem.
Troubleshooting
- Run
thicket doctor. It checks your Node version, your token, whether Thicket is reachable, and which organization you're using. - "The token did not authenticate": the token was revoked or expired. Run
thicket auth loginagain. - A change is refused: you signed in read-only. Run
thicket auth login --scope full. - Rate limited: each token can make 50 requests every 10 seconds. Wait a moment and try again.