CLI Reference
The Hypertask CLI (hypertask) lets you manage tasks, projects, comments, and notifications directly from your terminal. It is the fastest way to interact with Hypertask programmatically and is the recommended interface for AI agents like Claude Code.
Installation
Section titled “Installation”npm install -g @hypertask/hypertask_cliVerify the installation:
hypertask --versionAuthentication
Section titled “Authentication”-
Login via browser (recommended):
Terminal window hypertask loginThis opens your browser to authenticate and saves the token locally.
-
Login with a token (for CI/headless environments):
Terminal window hypertask login --token <your-jwt-token> -
Check your auth status:
Terminal window hypertask auth:status -
Logout:
Terminal window hypertask logout
Global Options
Section titled “Global Options”These flags can be used with any command:
| Flag | Description |
|---|---|
--token <jwt> | Override the saved JWT token for this invocation |
--api-url <url> | Override the API URL (default: https://app.hypertask.ai/api) |
--json | Output raw JSON instead of formatted text |
-V, --version | Print the CLI version |
-h, --help | Show help for any command |
# Get JSON output for scriptinghypertask task list --project 15 --json
# Use a different token for a one-off commandhypertask task list --project 15 --token eyJhbG...Plain output vs. --json
Section titled “Plain output vs. --json”For read commands (task get, task show, comment list, and similar), the default plain-text output is complete — it contains every field returned by the API, formatted as tab-separated values. You do not need --json just to get complete data. Use --json when you need structured, machine-parseable output (e.g. piping to jq); omit it when you just want a human-readable summary or are parsing the tab-separated output directly in a script.
The --help output for each read command states this explicitly, and hypertask capabilities --json surfaces the same note automatically so agents do not need to guess.
# Plain output is complete — safe to parse without --jsonhypertask task get HTPR-2992hypertask comment list HTPR-2992
# Use --json when you need structured data for toolshypertask task get HTPR-2992 --json | jq '.priority'hypertask comment list HTPR-2992 --json | jq '.[].text'Ticket Number Format
Section titled “Ticket Number Format”All commands that accept a ticket identifier (e.g. task get, task update, task move, comment list) require the full PREFIX-NNN format such as HTPR-2992. Passing a bare number (e.g. 2992) is rejected with a clear error:
Error: Invalid ticket number, expected PREFIX-NNN (e.g. HTPR-2992)This validation prevents a bare number from silently resolving to an unintended task.
Exit Codes
Section titled “Exit Codes”The CLI uses standard exit codes so scripts and CI pipelines can reliably detect failures:
| Code | Meaning |
|---|---|
0 | Success |
1 | General runtime error (e.g. API error, authentication failure) |
2 | Invalid usage — unknown or misspelled subcommand / missing required argument |
Unknown subcommands fail loudly with a descriptive error instead of silently printing root help:
$ hypertask tasks frobnicateError: 'task frobnicate' is not a valid subcommandUpdate Notifications
Section titled “Update Notifications”From v1.3.4 onwards, the CLI checks for newer versions on every command and prints a nudge when an update is available:
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── Update available: 1.3.3 → 1.3.4 Run: npm install -g @hypertask/hypertask_cli└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────To suppress the notifier in CI or automated scripts, set the environment variable NO_UPDATE_NOTIFIER=1.
Capability Discovery
Section titled “Capability Discovery”capabilities / commands
Section titled “capabilities / commands”Dump the full CLI command and option tree as machine-readable JSON. This is the fastest way for an agent or script to enumerate every command, flag, and description in one call — no recursive --help grepping needed.
hypertask capabilities --jsoncommands is an alias for capabilities; both are identical.
| Flag | Description |
|---|---|
--json | Output as JSON (recommended for programmatic use) |
Sample output (abbreviated):
[ { "name": "task create", "description": "Create a new task", "options": [ { "flags": "--project <id>", "description": "Project ID (required)" }, { "flags": "--title <text>", "description": "Task title (required)" }, { "flags": "--attach <path-or-url>", "description": "Attach a local file or URL (repeatable)" } ] }, { "name": "task get", "description": "Get full details of a task. Plain output is complete, tab-separated, and safe to parse without --json.", "options": [] }, { "name": "comment list", "description": "List comments on a task. Plain output is complete, tab-separated, and safe to parse without --json.", "options": [] }, { "name": "comment add", "description": "Add a comment to a task", "options": [ { "flags": "--attach <path-or-url>", "description": "Attach a local file or URL to the comment (repeatable)" } ] }]task list
Section titled “task list”List tasks with filters.
hypertask task list --project 15 --section "Doing" --assigned-to me| Flag | Description | Default |
|---|---|---|
--project <id> | Filter by project ID | — |
--section <name> | Filter by section name | — |
--assigned-to <value> | Filter by assignee: me, unassigned, or a user ID | — |
--created-by <id> | Filter by creator user ID (numeric) | — |
--priority <list> | Comma-separated priorities: urgent, high, medium, low | — |
--sort-by <field> | Sort results by createdAt, updatedAt, or dueDate | — |
--sort-order <asc|desc> | Sort direction — use together with --sort-by | — |
--limit <n> | Results per page | 10 |
--offset <n> | Pagination offset | 0 |
# High-priority tasks assigned to youhypertask task list --project 15 --assigned-to me --priority urgent,high
# Most recently updated tasks firsthypertask task list --project 15 --sort-by updatedAt --sort-order desc
# Page through resultshypertask task list --project 15 --limit 20 --offset 20task get / task show
Section titled “task get / task show”Get full details of a single task by its ticket number. Response always includes the complete task description (including long, multi-paragraph descriptions), labels, parent_id for subtasks, and the task URL.
hypertask task get HTPR-2992hypertask task show HTPR-2992 # alias for task get| Argument | Description |
|---|---|
<ticket> | Ticket identifier in PREFIX-NNN format (e.g., HTPR-2992) |
task tree
Section titled “task tree”Show the full parent/subtask hierarchy for a task. Displays the family tree of a task including all parents and children.
hypertask task tree --ticket HTPR-2992| Flag | Description | Default |
|---|---|---|
--ticket <ticket> | Ticket number (e.g., HTPR-2992) | — |
--task-id <id> | Numeric task ID | — |
--depth <n> | Max levels deep to show | Full tree |
# Show subtask tree by ticket numberhypertask task tree --ticket HTPR-2992
# Show subtask tree by task ID, limited to 2 levels deephypertask task tree --task-id 1234 --depth 2task create
Section titled “task create”Create a new task.
hypertask task create \ --project 15 \ --title "Implement dark mode toggle" \ --description "<p>Add a toggle switch in the settings panel to switch between light and dark themes.</p>" \ --priority high \ --labels "frontend,UX" \ --estimate 3 \ --due 2026-04-01| Flag | Description |
|---|---|
--project <id> | Project ID (required) |
--title <text> | Task title (required) |
--description <text> | Task description (HTML preferred; see note below) |
--priority <p> | Priority: urgent, high, medium, low, none |
--estimate <n> | Story points |
--labels <list> | Comma-separated label names or IDs (e.g., "CLI,BUG") |
--due <date> | Due date in ISO 8601 format (e.g., 2026-04-01) |
--parent-task <id> | Parent task ID — creates this task as a subtask |
--section <id|name> | Section ID or name (e.g., 4005 or "Doing") |
--assignee <list> | Comma-separated user IDs to assign (e.g., "42" or "42,99") |
--attach <path-or-url> | Attach a local file or URL (repeatable for multiple attachments) |
# Create a subtask under an existing taskhypertask task create \ --project 15 \ --title "Design the toggle component" \ --parent-task 1234 \ --priority medium
# Create a task with file attachmentshypertask task create \ --project 15 \ --title "Review mockups" \ --attach ./mockup.png \ --attach https://example.com/spec.pdftask update
Section titled “task update”Update an existing task’s properties.
hypertask task update HTPR-2992 --priority urgent --due 2026-03-25| Flag | Description |
|---|---|
--title <text> | New title |
--description <text> | New description (plain text or HTML; plain text is auto-wrapped in <p> tags) |
--priority <p> | New priority |
--estimate <n> | New story points |
--due <date> | New due date (ISO 8601) |
--status <s> | Lifecycle status: Normal, Archive, or Deleted |
--section <id|name> | Section (board column): ID or name like "Doing", "Done" |
--project <id> | Project ID (required when using --section with a name across projects) |
--assignee <list> | Comma-separated user IDs to assign (e.g., "42" or "42,99") |
--labels <list> | Comma-separated label names or IDs |
--parent-task <id> | Re-parent: set a new parent task by numeric ID |
--clear-parent | Detach this task from its current parent, making it a top-level task |
--attach <path> | Attach a local file (repeatable) |
# Move a task to the "Doing" sectionhypertask task update HTPR-2992 --section "Doing"
# Archive a completed taskhypertask task update HTPR-2992 --status Archive
# Update labelshypertask task update HTPR-2992 --labels "CLI,reviewed"
# Re-parent a task (make it a subtask of another task)hypertask task update HTPR-2992 --parent-task 1234
# Detach a subtask from its parent (make it a top-level task)hypertask task update HTPR-2992 --clear-parenttask assign
Section titled “task assign”Assign a user to a task.
hypertask task assign HTPR-2992 --user 42| Flag | Description |
|---|---|
--user <id> | User ID to assign |
task move
Section titled “task move”Move a task to a different section within the same board, or to a different project entirely.
# Move within the same boardhypertask task move HTPR-2992 --section "Done"
# Move to a different projecthypertask task move HTPR-2992 --to 20 --to-section 5010| Flag | Description |
|---|---|
--section <name> | Destination section name within the same board (e.g., "Doing", "Done") |
--to <id> | Target project ID — move to a different project |
--to-section <id> | Target section ID in the destination project (use with --to) |
task move-board
Section titled “task move-board”Move a task to a different project/board entirely. Alias: task move-project.
hypertask task move-board HTPR-2992 --target-project 20 --target-section 5010| Flag | Description |
|---|---|
--target-project <id> | Target project ID |
--target-section <id> | Target section ID |
Sections
Section titled “Sections”Section management lives under the top-level section command (not project section). Use these commands to create, rename, delete, and reorder board columns from the terminal.
section create
Section titled “section create”Create a new section (column) on a board.
hypertask section create --project 15 --title "In Review"| Flag | Description |
|---|---|
--project <id> | Project ID (required) |
--title <text> | Section title (required) |
--after <id|name> | Insert after this existing section (optional) |
# Create a section and place it after an existing onehypertask section create --project 15 --title "In Review" --after "Doing"section rename
Section titled “section rename”Rename an existing section.
hypertask section rename --project 15 --section "In Review" --title "Code Review"| Flag | Description |
|---|---|
--project <id> | Project ID (required) |
--section <id|name> | The section to rename, by ID or current name (required) |
--title <text> | New title for the section (required) |
section delete
Section titled “section delete”Delete a section from a board.
hypertask section delete --project 15 --section "In Review"| Flag | Description |
|---|---|
--project <id> | Project ID (required) |
--section <id|name> | The section to delete, by ID or name (required) |
section reorder
Section titled “section reorder”Move a section to a new position on the board by specifying which section it should appear after.
hypertask section reorder --project 15 --section "In Review" --after "Doing"| Flag | Description |
|---|---|
--project <id> | Project ID (required) |
--section <id|name> | The section to move, by ID or name (required) |
--after <id|name> | The section it should appear after, by ID or name (required) |
# Move "QA" to appear after "In Review"hypertask section reorder --project 15 --section "QA" --after "In Review"
# Use section IDs for precisionhypertask section reorder --project 15 --section 4012 --after 4005Projects
Section titled “Projects”project list
Section titled “project list”List all projects you have access to.
hypertask project list| Flag | Description | Default |
|---|---|---|
--limit <n> | Results per page | 10 |
--offset <n> | Pagination offset | 0 |
project sections
Section titled “project sections”List all sections (columns) in a project.
hypertask project sections 15| Argument | Description |
|---|---|
<project-id> | The project ID |
project members
Section titled “project members”List all members of a project.
hypertask project members 15| Argument | Description |
|---|---|
<project-id> | The project ID |
project invite
Section titled “project invite”Invite a user to a project by email address. The invited user receives an email invitation and gains access once they accept.
hypertask project invite 15 --email teammate@example.com| Argument | Description |
|---|---|
<project-id> | The project ID (required) |
| Flag | Description |
|---|---|
--email <address> | Email address of the person to invite (required) |
# Invite a new team member to project 15hypertask project invite 15 --email alice@example.com
# Confirm current members after invitinghypertask project members 15project labels
Section titled “project labels”List available labels for a project.
hypertask project labels 15| Argument | Description |
|---|---|
<project-id> | The project ID |
project label create
Section titled “project label create”Create a new label in a project.
hypertask project label create --project 15 --name "CLI"| Flag | Description |
|---|---|
--project <id> | Project ID (required) |
--name <text> | Label name (required) |
project create-board
Section titled “project create-board”Create a whole new board from a JSON manifest — sections, labels, and starter tasks in one call. Uses the same manifest shape as the hypertask_create_board MCP tool.
hypertask project create-board --file board.jsonExample board.json:
{ "team_id": 3, "title": "Website Redesign", "sections": [ { "title": "Backlog" }, { "title": "Doing" }, { "title": "Done" } ], "labels": [ { "name": "Design" }, { "name": "Frontend" } ], "tasks": [ { "title": "Wireframe the homepage", "section": "Backlog", "labels": ["Design"], "priority": "high" } ]}| Flag | Description |
|---|---|
--file <path> | Path to a JSON manifest (required) |
Views are named filter/sort configurations saved in the Hypertask UI (e.g. “Dev Review & QA”, “Tests Running”). The CLI exposes read-only commands to list views and fetch their pre-filtered tasks — especially useful for agents working on large boards where scanning all tasks would be noisy and slow.
view list
Section titled “view list”List all saved views for a project, including each view’s ID, title, and visibility.
hypertask view list --project 15| Flag | Description |
|---|---|
--project <id> | Project ID (required) |
Example output:
ID NAME VISIBILITYview_abc123 Dev Review & QA sharedview_def456 Tests Running sharedview_ghi789 My Open Tasks privateview get
Section titled “view get”Fetch tasks from a specific saved view, with that view’s filters already applied.
hypertask view get view_abc123| Argument | Description |
|---|---|
<view-id> | The view identifier (from view list) |
| Flag | Description | Default |
|---|---|---|
--limit <n> | Max tasks to return | 50 |
--offset <n> | Pagination offset | 0 |
# Discover views, then pull tasks from onehypertask view list --project 15hypertask view get view_abc123 --limit 20
# Use JSON output for scriptinghypertask view get view_abc123 --json | jq '.[].title'Search
Section titled “Search”search
Section titled “search”Search for tasks by keyword. Results display full ticket titles (wrapping long titles across multiple lines in the table so nothing is cut off), links to each task, and include a Due column showing due dates where available.
hypertask search "dark mode" --project 15 --limit 5| Argument / Flag | Description | Default |
|---|---|---|
<query> | Search query (required) | — |
--project <id> | Restrict search to a project | — |
--limit <n> | Maximum results | 10 |
--json | Output raw JSON instead of the formatted table | — |
# Search and get JSON for scriptinghypertask search "payment bug" --project 15 --jsonComments
Section titled “Comments”comment list
Section titled “comment list”List all comments on a task, including the full body of each comment.
hypertask comment list HTPR-2992| Argument | Description |
|---|---|
<ticket> | Ticket identifier in PREFIX-NNN format (e.g., HTPR-2992) |
comment add
Section titled “comment add”Add a comment to a task. The comment is persisted immediately and a real comment URL is returned — use comment list to confirm the comment appears.
hypertask comment add HTPR-2992 --text "<p>Looks good, merging now.</p>"| Flag | Description |
|---|---|
--text <text> | Comment text (HTML format) |
--attach <path-or-url> | Attach a local file or URL to the comment (repeatable for multiple attachments) |
# Attach a file alongside a commenthypertask comment add HTPR-2992 \ --text "<p>Screenshot of the issue attached.</p>" \ --attach ./screenshot.png
# Attach a remote URLhypertask comment add HTPR-2992 \ --text "<p>See the Loom recording for full context.</p>" \ --attach https://www.loom.com/share/abc123comment update
Section titled “comment update”Update an existing comment.
hypertask comment update 8450 --text "<p>Updated: shipped in v2.1.0</p>"| Argument / Flag | Description |
|---|---|
<id> | Comment ID |
--text <text> | New comment text (HTML format) |
comment delete
Section titled “comment delete”Delete a comment.
hypertask comment delete 8450| Argument | Description |
|---|---|
<id> | Comment ID |
Inbox (Notifications)
Section titled “Inbox (Notifications)”inbox list
Section titled “inbox list”List your unread notifications.
hypertask inbox listinbox archive
Section titled “inbox archive”Archive one or more notifications by ID, removing them from your active inbox.
hypertask inbox archive 101 102 103| Argument | Description |
|---|---|
<ids...> | One or more notification IDs to archive |
inbox unarchive
Section titled “inbox unarchive”Restore one or more previously archived notifications back to your active inbox. The notifications reappear as unread, with their archivedAt timestamp cleared.
hypertask inbox unarchive 101 102| Argument | Description |
|---|---|
<ids...> | One or more notification IDs to restore |
# Restore a single notificationhypertask inbox unarchive 301
# Restore several at oncehypertask inbox unarchive 301 302 303Context
Section titled “Context”context
Section titled “context”Retrieve your user context, including projects and permissions.
hypertask contextThis is useful to verify your identity, see which projects you belong to, and check your role/permissions.
Utility Commands
Section titled “Utility Commands”| Command | Description |
|---|---|
hypertask capabilities | Dump the full command + option tree as JSON (alias: commands) |
hypertask update | Update the CLI to the latest version |
hypertask auth:status | Check current authentication status |
hypertask auth:login --token <jwt> | Save a JWT token directly |
hypertask auth:logout | Clear saved authentication |
hypertask logout | Logout from Hypertask |
Common Workflows
Section titled “Common Workflows”Pick up a task from your inbox
Section titled “Pick up a task from your inbox”# 1. Check notificationshypertask inbox list
# 2. Read the task details (full description included; plain output is complete)hypertask task get HTPR-2992# or use the aliashypertask task show HTPR-2992
# 3. Move it to "Doing"hypertask task move HTPR-2992 --section "Doing"
# 4. Archive the notificationhypertask inbox archive 101Create and assign a task
Section titled “Create and assign a task”# 1. Find the project and its membershypertask project listhypertask project members 15
# 2. Create the taskhypertask task create \ --project 15 \ --title "Fix login timeout issue" \ --description "<p>Users are getting logged out after 5 minutes of inactivity. Expected session length is 24 hours.</p>" \ --priority urgent \ --labels "bug,auth"
# 3. Assign it (use the user ID from project members)hypertask task assign HTPR-3050 --user 42Invite a team member to a project
Section titled “Invite a team member to a project”# 1. Invite them by emailhypertask project invite 15 --email newmember@example.com
# 2. Confirm they appear in the member list (once they accept)hypertask project members 15Manage board sections
Section titled “Manage board sections”# List existing sections and their IDshypertask project sections 15
# Add a new sectionhypertask section create --project 15 --title "In Review"
# Rename a sectionhypertask section rename --project 15 --section "In Review" --title "Code Review"
# Reorder: move "Code Review" to appear after "Doing"hypertask section reorder --project 15 --section "Code Review" --after "Doing"
# Remove a sectionhypertask section delete --project 15 --section "Code Review"Manage subtask relationships
Section titled “Manage subtask relationships”# Create a task as a subtask of an existing taskhypertask task create \ --project 15 \ --title "Write unit tests for auth module" \ --parent-task 1234
# Re-parent an existing task under a different parenthypertask task update HTPR-2992 --parent-task 5678
# Promote a subtask to a top-level task (detach from its parent)hypertask task update HTPR-2992 --clear-parent
# Inspect the full subtask hierarchyhypertask task tree --ticket HTPR-1234Triage tasks by priority
Section titled “Triage tasks by priority”# List all urgent and high-priority taskshypertask task list --project 15 --priority urgent,high
# Review unassigned taskshypertask task list --project 15 --assigned-to unassigned
# Search for something specifichypertask search "payment" --project 15Work from a saved view (recommended for large boards)
Section titled “Work from a saved view (recommended for large boards)”# 1. Discover available views (includes visibility)hypertask view list --project 15
# 2. Pull tasks from a focused viewhypertask view get view_abc123
# 3. Work the task as normalhypertask task get HTPR-2992hypertask task move HTPR-2992 --section "Doing"hypertask comment add HTPR-2992 --text "<p>Starting work on this now.</p>"Complete a task
Section titled “Complete a task”# 1. Add a final comment (plain @mention works)hypertask comment add HTPR-2992 --text "<p>Deployed to production. Verified working. @Alice please close this out.</p>"
# 2. Move to Donehypertask task move HTPR-2992 --section "Done"Attach files to a task or comment
Section titled “Attach files to a task or comment”# Attach files when creating a taskhypertask task create \ --project 15 \ --title "Review design assets" \ --attach ./wireframe.pdf \ --attach ./mockup.png
# Attach a file to an existing taskhypertask task update HTPR-2992 --attach ./final-spec.pdf
# Attach a file or URL alongside a commenthypertask comment add HTPR-2992 \ --text "<p>Added the updated spec.</p>" \ --attach ./updated-spec.pdfDiscover all CLI capabilities (for agents)
Section titled “Discover all CLI capabilities (for agents)”# Dump the full command + option tree as JSONhypertask capabilities --json
# Pipe to jq to find every command that supports --attachhypertask capabilities --json | jq '[.[] | select(.options[]?.flags | contains("--attach"))]'
# Identify read commands — their plain output is complete and tab-separatedhypertask capabilities --json | jq '[.[] | select(.description | contains("tab-separated"))]'Use JSON output for scripting
Section titled “Use JSON output for scripting”# Pipe task data to jqhypertask task list --project 15 --json | jq '.[].title'
# Get a task's priorityhypertask task get HTPR-2992 --json | jq '.priority'
# Search and process resultshypertask search "dark mode" --project 15 --json | jq '.[].ticketNumber'
# For simple reads, plain output is sufficient — no --json neededhypertask task get HTPR-2992hypertask comment list HTPR-2992