Comms CLI
A command-line interface for Comms.
Installation
npm install -g @doist/comms-cli
Agent Skills
Install skills for your coding agent:
tdc skill install claude-code
tdc skill install codex
tdc skill install cursor
tdc skill install gemini
tdc skill install pi
tdc skill install universal
Skills are installed to ~/<agent-dir>/skills/comms-cli/SKILL.md (e.g. ~/.claude/ for claude-code, ~/.agents/ for universal, etc.). When updating the CLI, installed skills are updated automatically. The universal agent is compatible with Amp, OpenCode, and other agents that read from ~/.agents/.
tdc skill list
tdc skill uninstall <agent>
Uninstallation
First, remove any installed agent skills:
tdc skill uninstall <agent>
Then uninstall the CLI:
npm uninstall -g @doist/comms-cli
Local Setup
git clone https://github.com/Doist/comms-cli.git
cd comms-cli
npm install
npm run build
npm link
This makes the tdc command available globally.
Setup
tdc auth login
This opens your browser to authenticate with Comms. Once approved, the token is stored in your OS credential manager:
- macOS: Keychain
- Windows: Credential Manager
- Linux: Secret Service/libsecret
If secure storage is unavailable, the CLI warns and falls back to ~/.config/comms-cli/config.json. Non-secret settings such as the current workspace remain in the config file.
Alternative methods
Manual token:
tdc auth token
The CLI prompts for the token without echoing it. Do not pass the token as a positional argument — it would be visible in ps / shell history.
Environment variable:
export COMMS_API_TOKEN="your-token"
COMMS_API_TOKEN always takes priority over the stored token.
Staging / alternate hosts
Point the CLI at a non-production Comms instance with COMMS_BASE_URL:
export COMMS_BASE_URL=https://comms.staging.todoist.com
export COMMS_API_TOKEN=<staging-token>
tdc user
The base URL is threaded through both the SDK and the search endpoint. You need a token issued by that environment — production tokens are rejected.
Auth commands
tdc auth status
tdc auth logout
Usage
tdc inbox
tdc inbox --unread
tdc mentions
tdc mentions --since 2026-04-01 --all --json
tdc thread view <ref>
tdc thread view <ref> --comment 123
tdc thread reply <ref>
tdc thread rename <ref> "New title"
tdc thread update <ref> "New body"
tdc conversation unread
tdc conversation view <ref>
tdc msg view <ref>
tdc search "keyword"
tdc search "keyword" --all
tdc react thread <ref> 👍
tdc away
tdc away set vacation 2026-03-20
tdc away clear
tdc groups
tdc groups view <ref>
tdc groups create "Frontend"
tdc groups create "FE" --users alice@doist.com,bob@doist.com
tdc groups rename <ref> "New name"
tdc groups delete <ref> --yes
tdc groups add-user <ref> alice@doist.com bob@doist.com
tdc groups remove-user <ref> id:123,id:456
References accept IDs (123 or id:123), Comms URLs, or fuzzy names (for workspaces/users).
Run tdc --help or tdc <command> --help for more options.
Shell Completions
Tab completion is available for bash, zsh, and fish:
tdc completion install
tdc completion install bash
Restart your shell or source your config file to activate. To remove:
tdc completion uninstall
Machine-readable output
All list/view commands support --json and --ndjson flags for scripting:
tdc inbox --json
tdc inbox --ndjson
tdc inbox --json --full
Development
npm install
npm run build
npm run dev
npm run type-check
npm run format
npm test