All commands support --help for full flag details. When piped (no TTY), commands output Markdown by default. Pass --json for JSON output.
Commands behave differently based on how they're invoked:
| Context | Behavior |
|---|---|
| Terminal (TTY) | Task listing commands show an interactive picker (navigate with ↑/↓ or j/k, Space to select, Enter to confirm). Selected tasks display full details and offer to open in browser. Color-coded output. |
| Piped | Clean markdown output, no colors, no prompts. Suitable for agents and scripts. |
--json flag |
Structured JSON output. No prompts. Overrides both TTY and piped modes. |
Interactive prompts also appear for: sprint disambiguation (multiple matches), workspace selection (cup init), agent selection (cup skill), and destructive confirmations (cup delete, cup archive, cup view-delete).
When --description / -d contains markdown with backticks or newlines, use $'...' (ANSI-C quoting) instead of double quotes or heredocs:
# Correct — backticks and newlines preserved
cup update abc123 -d $'## API Notes\n\nCall `init()` before `run()`.\n\n- Step 1\n- Step 2'
# Broken — heredoc strips backticks
cup update abc123 -d "$(cat <<'EOF'
Call `init()` here
EOF
)"This applies to cup create -d, cup update -d, cup comment -m, and cup reply -m. The same $'...' quoting works for any flag value containing backticks.
ClickUp workspaces can configure custom task IDs with a prefix per space (e.g., PROJ-123, DEV-42). The CLI detects these automatically - any ID matching the PREFIX-DIGITS format (uppercase letters, hyphen, digits) is treated as a custom task ID.
All commands that accept task IDs work with both native IDs and custom IDs:
cup task PROJ-123
cup update DEV-42 --status done
cup comment PROJ-456 -m "Fixed in latest commit"
cup subtasks DEV-100Custom ID resolution uses the teamId from your config, which is required (cup init sets it up).
Task links with custom IDs: The cup link command passes both task IDs in a single API request. When both IDs are custom, this works correctly. However, mixing custom and native IDs in a single link command may not work as expected because the ClickUp API applies the custom_task_ids flag to all IDs in the request.
| Command | Description |
|---|---|
cup init |
First-time setup (interactive, or use --token --team for agents) |
cup skill |
Install skill for your agents |
cup filter save <name> [args...] |
Save a command shortcut |
| Read | |
cup auth |
Check authentication status |
cup tasks |
My tasks (--all for all assignees) |
cup task <taskId> |
Get task details |
cup sprint |
My tasks in the active sprint |
cup sprints |
List all sprints across folders |
cup subtasks <taskId> |
List subtasks of a task |
cup comments <taskId> |
List comments on a task |
cup replies <commentId> |
List threaded replies on a comment |
cup activity <taskId> |
Task details + comment history |
cup lists <spaceId> |
List all lists in a space |
cup spaces |
List spaces in workspace |
cup inbox |
Recently updated tasks assigned to me |
cup assigned |
My tasks grouped by pipeline stage |
cup open <query> |
Open a task in the browser |
cup search <query> |
Search your tasks by name (--all for all assignees) |
cup summary |
Daily standup helper |
cup overdue |
Tasks past their due date |
cup tags <spaceId> |
List tags in a space |
cup time-in-status <taskId> |
Show how long a task has been in each status |
cup docs [query] |
List workspace docs |
cup doc <docId> [pageId] |
View a doc or doc page |
cup doc-pages <docId> |
All pages in a doc with content |
cup folders <spaceId> |
List folders in a space |
cup members |
List workspace members |
cup fields <listId> |
List custom fields for a list |
cup goals |
List goals in your workspace |
cup key-results <goalId> |
List key results for a goal |
cup task-types |
List custom task types |
cup templates |
List task templates |
cup list-templates |
List list templates |
cup folder-templates |
List folder templates |
cup views <id> |
List views on a list, space, folder, or workspace |
cup view <viewId> |
Get view details |
cup filter list |
List saved shortcuts |
cup filter run <name> |
Run a saved shortcut |
cup favorite list |
List saved favorites |
| Write | |
cup update <taskId> |
Update a task |
cup create |
Create a new task |
cup comment <taskId> |
Post a comment on a task |
cup comment-edit <commentId> |
Edit an existing comment |
cup comment-delete [commentId] |
Delete a comment |
cup reply <commentId> |
Reply to a comment |
cup archive <taskId> |
Archive or unarchive a task |
cup assign <taskId> |
Assign or unassign users |
cup depend <taskId> |
Add or remove task dependencies |
cup link <taskId> <linksTo> |
Add or remove a link between tasks |
cup attach <taskId> <filePath> |
Upload a file attachment to a task |
cup move <taskId> |
Add or remove a task from a list |
cup field <taskId> |
Set or remove custom field values |
cup delete <taskId> |
Delete a task |
cup tag <taskId> |
Add or remove tags on a task |
cup tag-create <spaceId> <name> |
Create a tag in a space |
cup tag-delete <spaceId> <name> |
Delete a tag from a space |
cup tag-update <spaceId> <tagName> |
Update a tag in a space |
cup checklist |
Manage checklists on tasks |
cup time start <taskId> |
Start tracking time on a task |
cup time stop |
Stop the running timer |
cup time status |
Show the currently running timer |
cup time log <taskId> <duration> |
Log a manual time entry |
cup time list |
List my recent time entries (--all for team) |
cup time update <timeEntryId> |
Update a time entry |
cup time delete <timeEntryId> |
Delete a time entry |
cup doc-create <title> |
Create a new doc |
cup doc-page-create <docId> <name> |
Create a page in a doc |
cup doc-page-edit <docId> <pageId> |
Edit a doc page |
cup doc-delete <docId> |
Delete a doc |
cup doc-page-delete <docId> <pageId> |
Delete a doc page |
cup space-create <name> |
Create a space |
cup list-create <spaceId> <name> |
Create a list in a space |
cup folder-create <spaceId> <name> |
Create a folder in a space |
cup list-rename <listId> <newName> |
Rename a list |
cup folder-rename <folderId> <newName> |
Rename a folder |
cup space-rename <spaceId> <newName> |
Rename a space |
cup field-create <name> |
Create a custom field in your workspace |
cup duplicate <taskId> |
Duplicate a task |
cup bulk status <status> <taskIds...> |
Bulk update task status |
cup bulk assign <taskIds...> |
Bulk assign user to tasks |
cup bulk due-date <date> <taskIds...> |
Bulk set due date |
cup bulk tag <tagName> <taskIds...> |
Bulk add/remove tag |
cup bulk priority <taskIds...> |
Bulk set priority on tasks |
cup bulk field <taskIds...> |
Bulk set a custom field value on tasks |
cup bulk move <taskIds...> |
Move multiple tasks to a destination list |
cup goal-create <name> |
Create a goal |
cup goal-update <goalId> |
Update a goal |
cup goal-delete <goalId> |
Delete a goal |
cup key-result-create <goalId> <name> |
Create a key result on a goal |
cup key-result-update <keyResultId> |
Update a key result |
cup key-result-delete <keyResultId> |
Delete a key result |
cup list-from-template <name> |
Create a list from a template |
cup view-create <listId> <name> |
Create a view on a list |
cup view-update <viewId> |
Update a view |
cup view-delete <viewId> |
Delete a view |
| Configuration | |
cup favorite add <type> <id> [alias] |
Add a favorite |
cup favorite remove <alias> |
Remove a favorite |
cup profile |
Manage profiles |
cup config |
Manage CLI configuration |
cup completion <shell> |
Output shell completion script |
First-time setup. In interactive mode, prompts for your API token, verifies it, auto-detects your workspace, and writes ~/.config/cup/config.json. In non-interactive mode, pass --token and --team to skip prompts. Automatically migrates config from ~/.config/cu/ if present.
# Interactive (prompts for token and workspace)
cup init
# Non-interactive (for CI, scripts, AI agents)
cup init --token pk_abc123 --team 12345678| Flag | Description |
|---|---|
--token <token> |
API token (pk_...) for non-interactive setup |
--team <teamId> |
Workspace/team ID for non-interactive setup |
Install the agent skill file for your coding agents. Auto-detects installed agents (Claude Code, Codex, OpenCode) and writes the skill to each detected location. Run it again after updating cup to refresh the skill content.
cup skill # install to detected agents
cup skill --print # preview the skill content
cup skill --path ~/.claude/skills/clickup/SKILL.md # install to a specific path| Flag | Description |
|---|---|
--print |
Print the skill content to stdout instead of installing |
--path <path> |
Install to a specific path instead of auto-detected locations |
List tasks assigned to you by default. Use --all to include all assignees. Shows all task types by default; use --type to filter by task type.
cup tasks
cup tasks --status "in progress"
cup tasks --name "login"
cup tasks --type task # regular tasks only
cup tasks --type initiative # initiatives only
cup tasks --type "Bug" # custom task type by name
cup tasks --list <listId>
cup tasks --space <spaceId>
cup tasks --include-closed
cup tasks --assignee me
cup tasks --tag "bug" --status "to do"
cup tasks --due-before 2026-04-01
cup tasks --created-after 2026-03-01
cup tasks --list 123 --field "Sprint" "Week 1"
cup tasks --json| Flag | Description |
|---|---|
--status <status> |
Filter by status (e.g. "in progress") |
--list <listId> |
Filter by list ID |
--space <spaceId|name> |
Filter by space ID or name (partial match) |
--name <partial> |
Filter by name (case-insensitive contains) |
--type <type> |
Filter by task type (e.g. "task", "initiative", custom name/ID) |
--all |
Include all tasks, not just mine |
--include-closed |
Include done/closed tasks |
--assignee <userId> |
Filter by assignee (user ID or "me") |
--tag <tag> |
Filter by tag name |
--due-before <date> |
Tasks due before date (YYYY-MM-DD) |
--due-after <date> |
Tasks due after date (YYYY-MM-DD) |
--created-after <date> |
Tasks created after date (YYYY-MM-DD) |
--created-before <date> |
Tasks created before date (YYYY-MM-DD) |
--field <name> <value> |
Filter by custom field (requires --list) |
--json |
Force JSON output |
List my tasks in the currently active sprint. Sprint detection searches for folders named sprint, iteration, cycle, or scrum, then parses list date ranges to find the active one. Supports multiple date formats (US, ISO, month-day, European). When multiple candidates match, TTY mode prompts for disambiguation.
Override auto-detection with --folder <id> or permanently via cup config set sprintFolderId <id>.
cup sprint
cup sprint --status "in progress"
cup sprint --folder 12345
cup sprint --include-closed
cup sprint --json| Flag | Description |
|---|---|
--status <status> |
Filter by status (fuzzy matching) |
--space <nameOrId> |
Limit to a specific space |
--folder <id> |
Use this folder ID instead of auto-detection |
--include-closed |
Include closed/done tasks |
--json |
Force JSON output |
List all sprints across sprint folders. Marks the currently active sprint.
cup sprints
cup sprints --space "Engineering"
cup sprints --jsonAll tasks assigned to me, grouped by pipeline stage (code review, in progress, to do, etc.).
cup assigned
cup assigned --status "in progress"
cup assigned --include-closed
cup assigned --jsonTasks assigned to me that were recently updated, grouped by time period (today, yesterday, last 7 days, etc.). Default lookback is 30 days.
cup inbox
cup inbox --days 7
cup inbox --include-closed
cup inbox --jsonGet task details including custom fields, checklists, dependencies, and linked tasks. Pretty summary in terminal, Markdown when piped.
cup task abc123
cup task abc123 --jsonNote: When piped, cup task outputs a structured Markdown summary of the task. For the full raw API response with all fields (custom fields, checklists, etc.), use --json.
List subtasks of a task.
cup subtasks abc123
cup subtasks abc123 --status "in progress"
cup subtasks abc123 --name "auth"
cup subtasks abc123 --include-closed
cup subtasks abc123 --jsonList comments on a task. Formatted view in terminal, Markdown when piped.
cup comments abc123
cup comments abc123 --jsonView task details and comment history together. Combines cup task and cup comments into a single view.
cup activity abc123
cup activity abc123 --jsonList all lists in a space, including lists inside folders. Useful for discovering list IDs needed by --list filter and cup create -l.
cup lists <spaceId>
cup lists <spaceId> --name "sprint"
cup lists <spaceId> --json| Flag | Description |
|---|---|
--name <partial> |
Filter lists by partial name match |
--archived |
Include only archived items (default: active items) |
--json |
Force JSON output |
List spaces in your workspace. Useful for getting space IDs for the --space filter.
cup spaces
cup spaces --name "eng"
cup spaces --my
cup spaces --json| Flag | Description |
|---|---|
--name <partial> |
Filter spaces by partial name match |
--my |
Show only spaces where I have assigned tasks |
--archived |
Include only archived items (default: active items) |
--json |
Force JSON output |
Open a task in the browser. Accepts a task ID or partial name.
cup open abc123
cup open "login bug"
cup open abc123 --jsonIf the query matches multiple tasks by name, all matches are listed and the first is opened.
Search tasks assigned to you by default. Use --all to search across all assignees. Supports multi-word queries with case-insensitive matching. Status filter supports fuzzy matching.
cup search "login bug"
cup search auth
cup search "payment flow" --json
cup search auth --status "prog" # fuzzy matches "in progress"
cup search "old task" --include-closed
cup search "payment" --all # search all workspace tasks
cup search "auth" --list 123 --space 456
cup search "bug" --tag "frontend" --due-before 2026-04-01
cup search "sprint" --list 123 --field "Sprint" "Week 1"| Flag | Description |
|---|---|
--status <s> |
Filter by status, supports fuzzy matching |
--list <listId> |
Filter by list ID |
--space <spaceId|name> |
Filter by space ID or name (partial match) |
--all |
Search all workspace tasks, not just mine |
--include-closed |
Include done/closed tasks |
--assignee <userId> |
Filter by assignee (user ID or "me") |
--tag <tag> |
Filter by tag name |
--due-before <date> |
Tasks due before date (YYYY-MM-DD) |
--due-after <date> |
Tasks due after date (YYYY-MM-DD) |
--created-after <date> |
Tasks created after date (YYYY-MM-DD) |
--created-before <date> |
Tasks created before date (YYYY-MM-DD) |
--field <name> <value> |
Filter by custom field (requires --list) |
--json |
Force JSON output |
Daily standup helper. Shows tasks grouped into: recently completed, in progress, and overdue.
cup summary
cup summary --hours 48
cup summary --json| Flag | Description |
|---|---|
--hours <n> |
Lookback for recently completed tasks (default 24) |
--json |
Force JSON output |
List tasks that are past their due date (excludes done/closed tasks by default). Sorted most overdue first.
cup overdue
cup overdue --include-closed
cup overdue --all
cup overdue --json| Flag | Description |
|---|---|
--include-closed |
Include done/closed overdue tasks |
--all |
Check all workspace tasks, not just mine |
--json |
Force JSON output |
Show how long a task has been in each status. Useful for tracking cycle time or spotting tasks stuck in review.
cup time-in-status abc123
cup time-in-status abc123 --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Check authentication status. Validates your API token and shows your user info.
cup auth
cup auth --jsonList docs in your workspace. Optionally filter by name.
cup docs
cup docs "design"
cup docs --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
View a doc's metadata and page tree (when pageId is omitted), or a specific page's content (when pageId is provided).
cup doc abc123 # doc metadata + page tree
cup doc abc123 page456 # specific page content
cup doc abc123 --json # doc metadata as JSON
cup doc abc123 page456 --json # page content as JSON| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
List all pages in a doc with their full content. Useful for dumping an entire doc.
cup doc-pages abc123
cup doc-pages abc123 --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
List folders in a space with their contained lists. Useful for discovering folder and list IDs.
cup folders <spaceId>
cup folders <spaceId> --name "sprint"
cup folders <spaceId> --json| Flag | Description |
|---|---|
--name <partial> |
Filter folders by partial name match |
--archived |
Include only archived items (default: active items) |
--json |
Force JSON output |
Update a task. Provide at least one of: --name, --description, --status, --priority, --due-date, --start-date, --time-estimate, --assignee, --remove-assignee, --parent, --detach, --archive, --unarchive, --type, --field.
cup update abc123 -s "in progress"
cup update abc123 -n "New task name"
cup update abc123 -d "Updated description with **markdown**"
cup update abc123 -d $'## Section\n\nUse `copy()` here.\n- Item 1\n- Item 2' # backticks + newlines
cup update abc123 --priority high
cup update abc123 --due-date 2025-03-15
cup update abc123 --due-date none # clear due date
cup update abc123 --start-date 2025-03-01
cup update abc123 --assignee me
cup update abc123 --assignee 12345
cup update abc123 --remove-assignee me
cup update abc123 --assignee 99 --remove-assignee 12345
cup update abc123 -n "New name" -s "done" --priority urgent
cup update abc123 --time-estimate 2h
cup update abc123 --parent parentTaskId # make it a subtask
cup update abc123 --detach # remove parent (promote to top-level)
cup update abc123 --archive # archive a task
cup update abc123 --unarchive # unarchive a task
cup update abc123 --type Initiative # change task type by name
cup update abc123 --type 1 # change task type by custom_item_id
cup update abc123 --field "Story Points" 5
cup update abc123 --field "Priority" "High" --field "Tags" "bug"
cup update abc123 -s "in progress" --json--field "Name" value updates a custom field inline as part of the update. Field names are resolved via the task's list using the same parser as cup field --set (text, number, checkbox, dropdown name, labels, date, url, email, etc.). Repeat the flag to set multiple fields.
| Flag | Description |
|---|---|
-n, --name <text> |
New task name |
-d, --description <text> |
New description (markdown supported). Use $'...' quoting for backticks/newlines |
-s, --status <status> |
New status, supports fuzzy matching (e.g. "prog" matches "in progress") |
--priority <level> |
Priority: urgent, high, normal, low (or 1-4) |
--due-date <date> |
Due date (YYYY-MM-DD), or "none"/"clear" to remove |
--start-date <date> |
Start date (YYYY-MM-DD) |
--time-estimate <duration> |
Time estimate (e.g. "2h", "30m", "1h30m") |
--assignee <userId> |
Add assignee by user ID or "me" |
--remove-assignee <userId> |
Remove assignee by user ID or "me" |
--parent <taskId> |
Set parent task (makes this a subtask) |
--detach |
Remove parent task (promote subtask to top-level) |
--archive |
Archive the task |
--unarchive |
Unarchive the task |
--type <type> |
Change task type (name or custom_item_id) |
--field <name> <value> |
Set custom field inline (repeatable; resolves field names via the task's list) |
--json |
Force JSON output even in terminal |
Create a new task. If --parent is given, list is auto-detected from the parent task.
cup create -n "Fix login bug" -l <listId>
cup create -n "Subtask name" -p <parentTaskId> # --list auto-detected
cup create -n "Task" -l <listId> -d "desc" -s "open"
cup create -n "Task" -l <listId> -d $'## Overview\n\nCall `init()` first.\n- Step 1\n- Step 2'
cup create -n "Task" -l <listId> --priority high --due-date 2025-06-01
cup create -n "Task" -l <listId> --assignee me --tags "bug,frontend"
cup create -n "Initiative" -l <listId> --custom-item-id 1
cup create -n "Task" -l <listId> --time-estimate 2h
cup create -n "Bug fix" -l <listId> --field "Story Points" 5 --field "Stage" "In Review"
cup create -n "From Template" -l <listId> --template <templateId>
cup create -n "Bug fix" -l sprint:current # create in active sprint
cup create -n "Fix bug" -l <listId> --jsonsprint:current is a pseudo-ID that auto-resolves to the active sprint list using the same detection chain as cup sprint (--folder flag > sprintFolderId config > favorited sprint-folders > auto-detection).
--field "Name" value sets custom fields inline as part of task creation. Field names are resolved once against the target list via GET /list/{id}/field, so the values land in the initial create payload instead of requiring a follow-up cup field --set call. Repeat the flag to set multiple fields. Value parsing matches cup field --set (text, number, checkbox, dropdown name, labels, date, url, email, etc.).
| Flag | Required | Description |
|---|---|---|
-n, --name <name> |
yes | Task name |
-l, --list <listId> |
if no --parent |
Target list ID (accepts sprint:current pseudo-ID) |
-p, --parent <taskId> |
no | Parent task (list auto-detected) |
-d, --description <text> |
no | Description (markdown). Use $'...' quoting for backticks/newlines |
-s, --status <status> |
no | Initial status |
--priority <level> |
no | Priority: urgent, high, normal, low (or 1-4) |
--due-date <date> |
no | Due date (YYYY-MM-DD) |
--start-date <date> |
no | Start date (YYYY-MM-DD) |
--time-estimate <duration> |
no | Time estimate (e.g. "2h", "30m", "1h30m") |
--assignee <userId> |
no | Assignee by user ID or "me" |
--tags <tags> |
no | Comma-separated tag names |
--custom-item-id <id> |
no | Custom task type ID (e.g. for creating initiatives) |
--template <id> |
no | Create from a task template (use cup templates to find IDs) |
--field <name> <value> |
no | Set custom field inline (repeatable) |
--json |
no | Force JSON output even in terminal |
Delete a task. DESTRUCTIVE - cannot be undone.
cup delete abc123
cup delete abc123 --confirm
cup delete abc123 --confirm --jsonIn TTY mode without --confirm: shows the task name and prompts for confirmation (default: No). In non-interactive/piped mode, --confirm is required.
| Flag | Description |
|---|---|
--confirm |
Skip confirmation prompt (required in non-interactive mode) |
--json |
Force JSON output |
Set or remove a custom field value. Field names are resolved case-insensitively; errors list available fields/options.
cup field abc123 --set "Priority Level" high
cup field abc123 --set "Story Points" 5
cup field abc123 --set "Approved" true
cup field abc123 --set "Category" "Bug Fix"
cup field abc123 --set "Due" 2025-06-01
cup field abc123 --set "Website" "https://example.com"
cup field abc123 --set "Contact" "user@example.com"
cup field abc123 --set "Priority Labels" "High, Medium"
cup field abc123 --set "Rating" 3
cup field abc123 --set "Progress" 75
cup field abc123 --set "Related Tasks" "task1, task2"
cup field abc123 --set "Reviewers" "123, 456"
cup field abc123 --remove "Priority Level"
cup field abc123 --set "Points" 3 --remove "Old Field"
cup field abc123 --set "Points" 3 --json| Flag | Description |
|---|---|
--set "Field Name" <val> |
Set a custom field by name. Supports: text, number, checkbox (true/false), dropdown (option name), labels (comma-separated names), date (YYYY-MM-DD), url, email, emoji/rating (0-5), manual_progress (0-100), tasks/relationship (comma-separated task IDs), users/people (comma-separated user IDs) |
--remove "Field Name" |
Remove a custom field value |
--json |
Force JSON output |
Both --set and --remove can be used together in one invocation.
Create a custom field in your workspace. Requires specifying the field type.
cup field-create "Story Points" -t number
cup field-create "Priority Level" -t drop_down
cup field-create "Approved" -t checkbox --required
cup field-create "Notes" -t text -d "Internal notes for the team"
cup field-create "Contact Email" -t email --json| Flag | Required | Description |
|---|---|---|
-t, --type <type> |
yes | Field type: text, short_text, number, date, checkbox, drop_down, labels, email, phone, url, currency |
-d, --description |
no | Field description |
--required |
no | Make the field required |
--json |
no | Force JSON output |
Post a comment on a task. Markdown formatting in the message is automatically converted to ClickUp rich text (bold, italic, headers, lists, code blocks, links, etc.).
cup comment abc123 -m "Addressed in PR #42"
cup comment abc123 -m "## Results\n\n**Passed**: 15/15\n- Unit tests\n- Integration"
cup comment abc123 -m "Done" --notify-all
cup comment abc123 -m "Done" --json| Flag | Required | Description |
|---|---|---|
-m, --message |
yes | Comment text (markdown auto-converted) |
--notify-all |
no | Notify all task assignees |
--json |
no | Force JSON output |
Edit an existing comment on a task. Provide --message, --resolved, or --unresolved (or any combination). Markdown in the message is automatically converted to rich text.
cup comment-edit <commentId> -m "Updated text"
cup comment-edit <commentId> -m "Fixed" --resolved
cup comment-edit <commentId> --resolved
cup comment-edit <commentId> -m "Reopening" --unresolved
cup comment-edit <commentId> -m "Updated" --json| Flag | Required | Description |
|---|---|---|
-m, --message |
no | New comment text |
--resolved |
no | Mark comment as resolved |
--unresolved |
no | Mark comment as unresolved |
--json |
no | Force JSON output |
Delete a comment by ID, or use --task with --mine to find and delete your comment from a task.
cup comment-delete 12345
cup comment-delete 12345 --json
cup comment-delete --task abc123 --mine
cup comment-delete --task abc123 --mine --match "report uploaded"| Flag | Required | Description |
|---|---|---|
--task <taskId> |
no | Task to search for your comment (requires --mine) |
--mine |
no | Delete one of my comments from the specified task |
--match <text> |
no | Only match comments containing this text (requires --mine) |
--json |
no | Force JSON output |
List threaded replies on a comment.
cup replies 12345
cup replies 12345 --jsonReply to a comment. Markdown in the message is automatically converted to rich text.
cup reply 12345 -m "Agreed, will fix"
cup reply 12345 -m "Done" --json| Flag | Required | Description |
|---|---|---|
-m, --message |
yes | Reply text (markdown auto-converted) |
--notify-all |
no | Notify all task assignees |
--json |
no | Force JSON output |
Archive or unarchive a task. In TTY mode prompts for confirmation unless --confirm is passed.
cup archive abc123
cup archive abc123 --confirm
cup archive abc123 --unarchive
cup archive abc123 --unarchive --confirm
cup archive abc123 --json| Flag | Description |
|---|---|
--unarchive |
Unarchive instead of archiving |
--confirm |
Skip confirmation prompt (required in non-interactive mode) |
--json |
Force JSON output |
Assign or unassign users from a task. Supports me as shorthand for your user ID. Both --to and --remove accept a comma-separated list of user IDs to add or remove multiple assignees in a single call.
cup assign abc123 --to 12345
cup assign abc123 --to me
cup assign abc123 --remove 12345
cup assign abc123 --to me --remove 67890
cup assign abc123 --to user1,user2,user3
cup assign abc123 --remove user1,user2
cup assign abc123 --to "me,12345" --json| Flag | Description |
|---|---|
--to <userIds> |
Add assignee(s) (comma-separated, or me) |
--remove <userIds> |
Remove assignee(s) (comma-separated, or me) |
--json |
Force JSON output |
Add or remove task dependencies. Set a task as waiting on or blocking another task.
cup depend abc123 --on def456 # abc123 depends on (waits for) def456
cup depend abc123 --blocks def456 # abc123 blocks def456
cup depend abc123 --on def456 --remove # remove the dependency
cup depend abc123 --blocks def456 --remove
cup depend abc123 --on def456 --json| Flag | Description |
|---|---|
--on <taskId> |
Task that this task depends on (waiting on) |
--blocks <taskId> |
Task that this task blocks |
--remove |
Remove the dependency instead of adding it |
--json |
Force JSON output |
Add or remove a link between two tasks. Links are different from dependencies - they indicate a relationship without implying order.
cup link abc123 def456
cup link abc123 def456 --remove
cup link abc123 def456 --json| Flag | Required | Description |
|---|---|---|
--remove |
no | Remove the link instead of adding |
--json |
no | Force JSON output |
Upload a file attachment to a task.
cup attach abc123 ./screenshot.png
cup attach abc123 /path/to/report.pdf --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
JSON output includes the attachment ID, title, and URL.
Attachments are also shown inline when viewing task details with cup task <id>.
Deleting task attachments is not currently supported because the public ClickUp API exposes upload endpoints, but not an attachment delete endpoint.
Add or remove a task from a list. Tasks can belong to multiple lists in ClickUp.
cup move abc123 --to <listId> # add task to a list
cup move abc123 --remove <listId> # remove task from a list
cup move abc123 --to <newListId> --remove <oldListId> # move between lists
cup move abc123 --to sprint:current # move to active sprint
cup move abc123 --to sprint:current --remove <oldListId>
cup move abc123 --to <listId> --jsonsprint:current is a pseudo-ID that auto-resolves to the active sprint list using the same detection chain as cup sprint (--folder flag > sprintFolderId config > favorited sprint-folders > auto-detection).
| Flag | Description |
|---|---|
--to <listId> |
Add task to this list (accepts sprint:current pseudo-ID) |
--remove <listId> |
Remove task from this list |
--json |
Force JSON output |
Add or remove tags on a task. Both --add and --remove can be used together.
cup tag abc123 --add "bug"
cup tag abc123 --add "bug,frontend,urgent"
cup tag abc123 --remove "wontfix"
cup tag abc123 --add "bug" --remove "triage"
cup tag abc123 --add "bug" --json| Flag | Description |
|---|---|
--add <tags> |
Comma-separated tag names to add |
--remove <tags> |
Comma-separated tag names to remove |
--json |
Force JSON output |
Manage checklists on tasks. Six subcommands for full CRUD operations.
cup checklist view abc123 # view all checklists on a task
cup checklist create abc123 "QA Checklist" # add a checklist
cup checklist delete <checklistId> # remove a checklist
cup checklist add-item <checklistId> "Run tests" # add an item
cup checklist add-item <clId> "Sub step" --parent <itemId> # nest under parent
cup checklist edit-item <clId> <itemId> --resolved # mark item done
cup checklist edit-item <clId> <itemId> --parent <newParent> # reparent (use "null" to unnest)
cup checklist delete-item <clId> <itemId> # remove an item| Subcommand | Arguments | Description |
|---|---|---|
view |
<taskId> |
Show all checklists |
create |
<taskId> <name> |
Create a checklist |
delete |
<checklistId> |
Delete a checklist |
add-item |
<checklistId> <name> [flags] |
Add checklist item |
edit-item |
<checklistId> <itemId> [flags] |
Edit checklist item |
delete-item |
<checklistId> <itemId> |
Delete checklist item |
add-item flags: --parent <itemId> to nest under a parent item. edit-item flags: --name <text>, --resolved, --unresolved, --assignee <userId>, --parent <itemId> (pass "null" to unnest). All subcommands support --json.
Checklists are also shown inline in cup task <id> detail view.
Start tracking time on a task. Creates a running timer.
cup time start abc123
cup time start abc123 -d "Working on feature"
cup time start abc123 --json| Flag | Required | Description |
|---|---|---|
-d, --description |
no | Description for the time entry |
--json |
no | Force JSON output |
Stop the currently running timer.
cup time stop
cup time stop --jsonShow the currently running timer, or "No timer running" if none is active.
cup time status
cup time status --jsonLog a manual time entry. Duration accepts human-readable format: "2h", "30m", "1h30m", or raw milliseconds.
cup time log abc123 2h
cup time log abc123 30m -d "Code review"
cup time log abc123 1h30m --json| Flag | Required | Description |
|---|---|---|
-d, --description |
no | Description for the time entry |
--json |
no | Force JSON output |
List recent time entries. Defaults to the current user's entries (last 7 days). Use --all to show all team entries.
Breaking change: previously returned all team entries by default. Now returns only the authenticated user's entries unless --all is passed.
cup time list
cup time list --all # all team entries
cup time list --days 14
cup time list --task abc123
cup time list --space <spaceId>
cup time list --list <listId>
cup time list --assignee <userId>
cup time list --days 7 --json| Flag | Required | Description |
|---|---|---|
--days <n> |
no | Number of days to look back (default: 7) |
--task <taskId> |
no | Filter entries by task ID |
--space <spaceId> |
no | Filter entries by space ID |
--list <listId> |
no | Filter entries by list ID |
--assignee <userId> |
no | Filter entries by assignee user ID |
--all |
no | Show all team entries (default: only mine) |
--json |
no | Force JSON output |
Update a time entry's description or duration.
cup time update te123 -d "Updated description"
cup time update te123 --duration 3h
cup time update te123 -d "Review" --duration 1h30m --json| Flag | Required | Description |
|---|---|---|
-d, --description |
one of two | New description |
--duration <duration> |
one of two | New duration (e.g. "2h", "30m") |
--json |
no | Force JSON output |
Delete a time entry.
cup time delete te123
cup time delete te123 --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
List tags available in a space. Useful for discovering valid tag names for cup tag.
cup tags <spaceId>
cup tags <spaceId> --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Create a new space in your workspace.
cup space-create "Engineering"
cup space-create "Design" --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Create a new list in a space. Optionally create it inside a folder with --folder. Use --copy-statuses-from to copy the status set from an existing list or space.
cup list-create <spaceId> "Backlog"
cup list-create <spaceId> "Sprint 1" --folder <folderId>
cup list-create <spaceId> "Tasks" --json
cup list-create <spaceId> "Sprint 5" --copy-statuses-from <existingListId>
cup list-create <spaceId> "New List" --copy-statuses-from <spaceId>| Flag | Required | Description |
|---|---|---|
--folder <folderId> |
no | Create the list inside a folder |
--copy-statuses-from <id> |
no | Copy status set from this list or space ID |
--json |
no | Force JSON output |
Create a new folder in a space.
cup folder-create <spaceId> "Q2 Work"
cup folder-create <spaceId> "Sprints" --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Rename a list. Wraps the PUT /list/{id} endpoint with a name-only payload, so statuses, content, and other list settings are left untouched.
cup list-rename <listId> "Sprint 12"
cup list-rename <listId> "Backlog (Archived)" --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Rename a folder. Wraps the PUT /folder/{id} endpoint with a name-only payload.
cup folder-rename <folderId> "Q3 Work"
cup folder-rename <folderId> "Sprints" --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Rename a space. Wraps the PUT /space/{id} endpoint with a name-only payload, leaving features and statuses untouched.
cup space-rename <spaceId> "Engineering"
cup space-rename <spaceId> "Design System" --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Create a new doc in your workspace.
cup doc-create "Architecture Notes"
cup doc-create "Draft" -c "# Initial content"
cup doc-create "Plan" --json| Flag | Required | Description |
|---|---|---|
-c, --content |
no | Initial content (markdown) |
--json |
no | Force JSON output |
Create a page in a doc. Optionally nest under a parent page.
cup doc-page-create abc123 "Getting Started"
cup doc-page-create abc123 "Setup" -c "# Setup guide"
cup doc-page-create abc123 "Sub Section" --parent-page page456
cup doc-page-create abc123 "Page" --json| Flag | Required | Description |
|---|---|---|
-c, --content |
no | Page content (markdown) |
--parent-page <pageId> |
no | Parent page ID for nesting |
--json |
no | Force JSON output |
Edit a doc page name or content. Provide at least --name or --content.
cup doc-page-edit abc123 page456 --name "Renamed Section"
cup doc-page-edit abc123 page456 -c "# Updated content"
cup doc-page-edit abc123 page456 --name "New Name" -c "# New body"
cup doc-page-edit abc123 page456 --name "Renamed" --json| Flag | Required | Description |
|---|---|---|
--name <text> |
one of two | New page name |
-c, --content |
one of two | New page content (markdown) |
--json |
no | Force JSON output |
Create a tag in a space.
cup tag-create <spaceId> "bug"
cup tag-create <spaceId> "urgent" --fg "#ffffff" --bg "#ff0000"
cup tag-create <spaceId> "feature" --json| Flag | Required | Description |
|---|---|---|
--fg <color> |
no | Foreground color (hex) |
--bg <color> |
no | Background color (hex) |
--json |
no | Force JSON output |
Delete a tag from a space.
cup tag-delete <spaceId> "old-tag"
cup tag-delete <spaceId> "deprecated" --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
List workspace members with username, ID, and email.
cup members
cup members --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
List custom fields available on a list. Shows field name, type, required status, and dropdown options.
cup fields <listId>
cup fields <listId> --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Duplicate a task. Creates a copy with "(copy)" appended to the name. Copies description, priority, tags, and time estimate. The new task is created in the same list.
cup duplicate abc123
cup duplicate abc123 --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
List custom task types in your workspace. Useful for discovering valid --custom-item-id values.
cup task-types
cup task-types --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
List task templates in your workspace. Useful for discovering template IDs for cup create --template.
cup templates
cup templates --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Update the status of multiple tasks at once. Failed updates are reported but don't stop the operation.
cup bulk status "done" t1 t2 t3
cup bulk status "in progress" t1 t2 --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Bulk assign or unassign a user from multiple tasks. Use --to to add a user and --remove to unassign. Failed updates are reported but don't stop the operation.
cup bulk assign t1 t2 t3 --to 12345
cup bulk assign t1 t2 --to me
cup bulk assign t1 t2 t3 --remove 12345 --json| Flag | Required | Description |
|---|---|---|
--to <userId> |
one of | Add this user (user ID or "me") |
--remove <userId> |
one of | Remove this user (user ID or "me") |
--json |
no | Force JSON output |
Bulk set or clear the due date on multiple tasks. Use none or clear to remove due dates. Failed updates are reported but don't stop the operation.
cup bulk due-date 2025-12-31 t1 t2 t3
cup bulk due-date none t1 t2
cup bulk due-date clear t1 t2 --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Bulk add or remove a tag from multiple tasks. Defaults to adding; use --remove to remove the tag. Failed updates are reported but don't stop the operation.
cup bulk tag bug t1 t2 t3
cup bulk tag bug t1 t2 --remove
cup bulk tag frontend t1 t2 --json| Flag | Required | Description |
|---|---|---|
--remove |
no | Remove tag instead of adding |
--json |
no | Force JSON output |
Bulk set the priority on multiple tasks. Accepts urgent, high, normal, low, or the numeric values 1-4. Updates run in parallel (up to 5 at a time) and failed updates are reported but don't stop the operation.
cup bulk priority t1 t2 t3 --to urgent
cup bulk priority t1 t2 --to 2
cup bulk priority t1 t2 t3 --to low --json| Flag | Required | Description |
|---|---|---|
--to <priority> |
yes | Priority: urgent, high, normal, low, or 1-4 |
--json |
no | Force JSON output |
Bulk set the same custom field value on multiple tasks. Resolves the field name against the first task in the list, then applies the parsed value to every task in parallel (up to 5 at a time). Uses the same value parsing as cup field --set (text, number, checkbox, dropdown name, labels, date, url, email, etc.). Failed updates are reported but don't stop the operation.
cup bulk field t1 t2 t3 --set "Story Points" 5
cup bulk field t1 t2 --set "Stage" "In Review"
cup bulk field t1 t2 t3 --set "Notes" "batch update" --json| Flag | Required | Description |
|---|---|---|
--set <name> <value> |
yes | Field name and value to set |
--json |
no | Force JSON output |
Move multiple tasks to a single destination list in parallel (up to 5 at a time). Wraps the same v3 home_list endpoint as cup move --to <new> --remove <old>, so each task's home list is updated and statuses are mapped to the destination list when they don't match. Failed moves are reported but don't stop the operation.
cup bulk move t1 t2 t3 --to <listId>
cup bulk move t1 t2 --to <listId> --json| Flag | Required | Description |
|---|---|---|
--to <listId> |
yes | Destination list ID |
--json |
no | Force JSON output |
List goals in your workspace with name, progress percentage, and owner.
cup goals
cup goals --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Create a goal in your workspace.
cup goal-create "Ship v2"
cup goal-create "Reduce bugs" -d "Track bug count reduction"
cup goal-create "Q4 OKR" --color "#00ff00" --due-date 2025-12-31 --json| Flag | Required | Description |
|---|---|---|
-d, --description <text> |
no | Goal description |
--color <hex> |
no | Goal color (hex) |
--due-date <date> |
no | Due date (YYYY-MM-DD) |
--json |
no | Force JSON output |
Update a goal's name, description, or color.
cup goal-update g123 -n "Updated Goal Name"
cup goal-update g123 -d "New description"
cup goal-update g123 --color "#ff0000" --json| Flag | Required | Description |
|---|---|---|
-n, --name <text> |
no | New goal name |
-d, --description <text> |
no | New description |
--color <hex> |
no | New color (hex) |
--json |
no | Force JSON output |
List key results for a goal with progress tracking.
cup key-results g123
cup key-results g123 --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Create a key result on a goal.
cup key-result-create g123 "Complete API endpoints"
cup key-result-create g123 "Coverage" --type percentage --target 80
cup key-result-create g123 "Ship features" --type number --target 10 --json| Flag | Required | Description |
|---|---|---|
--type <type> |
no | Type: number or percentage (default: number) |
--target <n> |
no | Target value (default: 100) |
--json |
no | Force JSON output |
Update a key result's progress or add a note.
cup key-result-update kr123 --progress 7
cup key-result-update kr123 --note "Completed 3 more items"
cup key-result-update kr123 --progress 10 --note "Done!" --json| Flag | Required | Description |
|---|---|---|
--progress <n> |
no | Current progress |
--note <text> |
no | Progress note |
--json |
no | Force JSON output |
Delete a goal.
cup goal-delete g123
cup goal-delete g123 --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Delete a key result.
cup key-result-delete kr123
cup key-result-delete kr123 --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Delete a doc.
cup doc-delete abc123
cup doc-delete abc123 --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Delete a doc page.
cup doc-page-delete abc123 page456
cup doc-page-delete abc123 page456 --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Update a tag in a space. Provide at least one of --name, --fg, or --bg.
cup tag-update <spaceId> "old-name" --name "new-name"
cup tag-update <spaceId> "bug" --name "defect" --fg "#fff" --bg "#f00"
cup tag-update <spaceId> "tag" --fg "#ffffff" --bg "#cc0000"
cup tag-update <spaceId> "tag" --name "renamed" --json| Flag | Required | Description |
|---|---|---|
--name <text> |
no | New tag name |
--fg <color> |
no | New foreground color (hex) |
--bg <color> |
no | New background color (hex) |
--json |
no | Force JSON output |
List list templates in your workspace.
cup list-templates
cup list-templates --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
List folder templates in your workspace.
cup folder-templates
cup folder-templates --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Create a list from a list template. Specify where to create the list with --space or --folder.
cup list-from-template "Sprint Board" --template <id> --space <spaceId>
cup list-from-template "Backlog" --template <id> --folder <folderId>
cup list-from-template "Tasks" --template <id> --space <spaceId> --json| Flag | Required | Description |
|---|---|---|
--template <id> |
yes | Template ID (find with cup list-templates) |
--space <spaceId> |
one of | Create the list in this space |
--folder <folderId> |
one of | Create the list in this folder |
--json |
no | Force JSON output |
List views on a list, space, folder, or workspace. Defaults to list-level views.
cup views <listId>
cup views <spaceId> --space
cup views <folderId> --folder
cup views any --workspace
cup views <listId> --json| Flag | Required | Description |
|---|---|---|
--space |
no | Treat <id> as a space ID |
--folder |
no | Treat <id> as a folder ID |
--workspace |
no | List workspace-level views (ignores <id>) |
--json |
no | Force JSON output |
Get view details including type, visibility, and creation date.
cup view <viewId>
cup view <viewId> --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Create a view on a list.
cup view-create <listId> "Sprint Board" -t board
cup view-create <listId> "Calendar" -t calendar
cup view-create <listId> "Status Board" -t board --group-by status
cup view-create <listId> "Team View" -t board --group-by assignee --json| Flag | Required | Description |
|---|---|---|
-t, --type |
yes | View type: list, board, calendar, gantt, table, timeline |
--group-by |
no | Group by: status, assignee, priority, due_date, tag, sprint |
--json |
no | Force JSON output |
Update a view's name or grouping.
cup view-update <viewId> -n "New Name"
cup view-update <viewId> --group-by priority
cup view-update <viewId> -n "Updated" --group-by assignee --json| Flag | Required | Description |
|---|---|---|
-n, --name |
no | New view name |
--group-by |
no | Group by: status, assignee, priority, due_date, tag, sprint |
--json |
no | Force JSON output |
Delete a view. DESTRUCTIVE - cannot be undone.
cup view-delete <viewId>
cup view-delete <viewId> --confirm
cup view-delete <viewId> --confirm --jsonIn TTY mode without --confirm: shows the view name and prompts for confirmation (default: No). In non-interactive/piped mode, --confirm is required.
| Flag | Required | Description |
|---|---|---|
--confirm |
no | Skip confirmation prompt (required in non-interactive mode) |
--json |
no | Force JSON output |
Saved filters let you store frequently used cup commands under a short name and re-run them with cup filter run <name>. Filters are stored per-profile in ~/.config/cup/config.json.
Save a command as a named shortcut.
cup filter save sprint-tasks tasks --status "in progress" --list l1 -d "Current sprint tasks"
cup filter save my-overdue overdue
cup filter save standup summary --hours 24| Flag | Required | Description |
|---|---|---|
-d, --description |
no | Description for the filter |
--json |
no | Force JSON output |
Allowed commands: tasks, search, sprint, assigned, overdue, inbox, summary, views, lists, spaces, folders, members, tags, goals, key-results, task-types, templates, list-templates, folder-templates, docs, time list.
Execute a saved shortcut. Equivalent to running the full command directly.
cup filter run sprint-tasks
cup filter run my-overdueList all saved shortcuts for the active profile.
cup filter list
cup filter list --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Remove a saved shortcut.
cup filter delete sprint-tasks| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Show details of a single saved shortcut.
cup filter show sprint-tasks
cup filter show standup --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Local favorites for quick access to frequently used entities. Stored per-profile in ~/.config/cup/config.json (not synced to ClickUp - there is no public favorites API).
Supported types: sprint-folder, space, list, folder, view, task.
Add a favorite. If alias is omitted, one is generated from the entity name (fetched from the API and slugified).
cup favorite add sprint-folder 12345
cup favorite add sprint-folder 12345 my-sprint
cup favorite add sprint-folder 12345 --name "Team Sprint"
cup favorite add space 67890 eng --name "Engineering"
cup favorite add list 11111 backlog
cup favorite add sprint-folder 12345 --json| Flag | Required | Description |
|---|---|---|
-n, --name <name> |
no | Display name |
--json |
no | Force JSON output |
Remove a favorite by its alias.
cup favorite remove my-sprint
cup favorite remove eng
cup favorite remove backlog --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
List all favorites for the active profile.
cup favorite list
cup favorite list --type sprint-folder
cup favorite list --json| Flag | Required | Description |
|---|---|---|
--type <type> |
no | Filter by type (e.g. sprint-folder) |
--json |
no | Force JSON output |
Sprint integration: Favorited sprint-folder entries are automatically used by cup sprint and cup sprints as additional discovery sources. Priority order: --folder flag > sprintFolderId config > favorites > auto-detection.
Manage named profiles for switching between ClickUp workspaces or accounts. All commands support the global -p, --profile <name> flag to override the default profile for a single invocation.
List all profiles. Marks the default profile.
cup profile list
cup profile list --json| Flag | Required | Description |
|---|---|---|
--json |
no | Force JSON output |
Add a new profile interactively. Prompts for API token, validates it, auto-detects workspaces, and saves.
cup profile add work
cup profile add personalRemove a profile. Refuses to remove the last profile.
cup profile remove old-accountSet the default profile.
cup profile use personalManage CLI configuration.
cup config get apiToken
cup config set teamId 12345
cup config pathValid keys: apiToken, teamId, sprintFolderId. Setting apiToken validates the pk_ prefix. Setting sprintFolderId pins cup sprint to a specific folder, skipping auto-detection. Operates on the active profile (use -p <name> to target a specific profile).
Output shell completion script. Supports bash, zsh, and fish.
eval "$(cup completion bash)" # Bash
eval "$(cup completion zsh)" # Zsh
cup completion fish > ~/.config/fish/completions/cup.fish # Fish