Skip to content

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.

Terminal window
npm install -g @hypertask/hypertask_cli

Verify the installation:

Terminal window
hypertask --version
  1. Login via browser (recommended):

    Terminal window
    hypertask login

    This opens your browser to authenticate and saves the token locally.

  2. Login with a token (for CI/headless environments):

    Terminal window
    hypertask login --token <your-jwt-token>
  3. Check your auth status:

    Terminal window
    hypertask auth:status
  4. Logout:

    Terminal window
    hypertask logout

These flags can be used with any command:

FlagDescription
--token <jwt>Override the saved JWT token for this invocation
--api-url <url>Override the API URL (default: https://app.hypertask.ai/api)
--jsonOutput raw JSON instead of formatted text
-V, --versionPrint the CLI version
-h, --helpShow help for any command
Terminal window
# Get JSON output for scripting
hypertask task list --project 15 --json
# Use a different token for a one-off command
hypertask task list --project 15 --token eyJhbG...

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.

Terminal window
# Plain output is complete — safe to parse without --json
hypertask task get HTPR-2992
hypertask comment list HTPR-2992
# Use --json when you need structured data for tools
hypertask task get HTPR-2992 --json | jq '.priority'
hypertask comment list HTPR-2992 --json | jq '.[].text'

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.

The CLI uses standard exit codes so scripts and CI pipelines can reliably detect failures:

CodeMeaning
0Success
1General runtime error (e.g. API error, authentication failure)
2Invalid usage — unknown or misspelled subcommand / missing required argument

Unknown subcommands fail loudly with a descriptive error instead of silently printing root help:

$ hypertask tasks frobnicate
Error: 'task frobnicate' is not a valid subcommand

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.


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.

Terminal window
hypertask capabilities --json

commands is an alias for capabilities; both are identical.

FlagDescription
--jsonOutput 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)" }
]
}
]

List tasks with filters.

Terminal window
hypertask task list --project 15 --section "Doing" --assigned-to me
FlagDescriptionDefault
--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 page10
--offset <n>Pagination offset0
Terminal window
# High-priority tasks assigned to you
hypertask task list --project 15 --assigned-to me --priority urgent,high
# Most recently updated tasks first
hypertask task list --project 15 --sort-by updatedAt --sort-order desc
# Page through results
hypertask task list --project 15 --limit 20 --offset 20

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.

Terminal window
hypertask task get HTPR-2992
hypertask task show HTPR-2992 # alias for task get
ArgumentDescription
<ticket>Ticket identifier in PREFIX-NNN format (e.g., HTPR-2992)

Show the full parent/subtask hierarchy for a task. Displays the family tree of a task including all parents and children.

Terminal window
hypertask task tree --ticket HTPR-2992
FlagDescriptionDefault
--ticket <ticket>Ticket number (e.g., HTPR-2992)
--task-id <id>Numeric task ID
--depth <n>Max levels deep to showFull tree
Terminal window
# Show subtask tree by ticket number
hypertask task tree --ticket HTPR-2992
# Show subtask tree by task ID, limited to 2 levels deep
hypertask task tree --task-id 1234 --depth 2

Create a new task.

Terminal window
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
FlagDescription
--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)
Terminal window
# Create a subtask under an existing task
hypertask task create \
--project 15 \
--title "Design the toggle component" \
--parent-task 1234 \
--priority medium
# Create a task with file attachments
hypertask task create \
--project 15 \
--title "Review mockups" \
--attach ./mockup.png \
--attach https://example.com/spec.pdf

Update an existing task’s properties.

Terminal window
hypertask task update HTPR-2992 --priority urgent --due 2026-03-25
FlagDescription
--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-parentDetach this task from its current parent, making it a top-level task
--attach <path>Attach a local file (repeatable)
Terminal window
# Move a task to the "Doing" section
hypertask task update HTPR-2992 --section "Doing"
# Archive a completed task
hypertask task update HTPR-2992 --status Archive
# Update labels
hypertask 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-parent

Assign a user to a task.

Terminal window
hypertask task assign HTPR-2992 --user 42
FlagDescription
--user <id>User ID to assign

Move a task to a different section within the same board, or to a different project entirely.

Terminal window
# Move within the same board
hypertask task move HTPR-2992 --section "Done"
# Move to a different project
hypertask task move HTPR-2992 --to 20 --to-section 5010
FlagDescription
--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)

Move a task to a different project/board entirely. Alias: task move-project.

Terminal window
hypertask task move-board HTPR-2992 --target-project 20 --target-section 5010
FlagDescription
--target-project <id>Target project ID
--target-section <id>Target section ID

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.

Create a new section (column) on a board.

Terminal window
hypertask section create --project 15 --title "In Review"
FlagDescription
--project <id>Project ID (required)
--title <text>Section title (required)
--after <id|name>Insert after this existing section (optional)
Terminal window
# Create a section and place it after an existing one
hypertask section create --project 15 --title "In Review" --after "Doing"

Rename an existing section.

Terminal window
hypertask section rename --project 15 --section "In Review" --title "Code Review"
FlagDescription
--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)

Delete a section from a board.

Terminal window
hypertask section delete --project 15 --section "In Review"
FlagDescription
--project <id>Project ID (required)
--section <id|name>The section to delete, by ID or name (required)

Move a section to a new position on the board by specifying which section it should appear after.

Terminal window
hypertask section reorder --project 15 --section "In Review" --after "Doing"
FlagDescription
--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)
Terminal window
# Move "QA" to appear after "In Review"
hypertask section reorder --project 15 --section "QA" --after "In Review"
# Use section IDs for precision
hypertask section reorder --project 15 --section 4012 --after 4005

List all projects you have access to.

Terminal window
hypertask project list
FlagDescriptionDefault
--limit <n>Results per page10
--offset <n>Pagination offset0

List all sections (columns) in a project.

Terminal window
hypertask project sections 15
ArgumentDescription
<project-id>The project ID

List all members of a project.

Terminal window
hypertask project members 15
ArgumentDescription
<project-id>The project ID

Invite a user to a project by email address. The invited user receives an email invitation and gains access once they accept.

Terminal window
hypertask project invite 15 --email teammate@example.com
ArgumentDescription
<project-id>The project ID (required)
FlagDescription
--email <address>Email address of the person to invite (required)
Terminal window
# Invite a new team member to project 15
hypertask project invite 15 --email alice@example.com
# Confirm current members after inviting
hypertask project members 15

List available labels for a project.

Terminal window
hypertask project labels 15
ArgumentDescription
<project-id>The project ID

Create a new label in a project.

Terminal window
hypertask project label create --project 15 --name "CLI"
FlagDescription
--project <id>Project ID (required)
--name <text>Label name (required)

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.

Terminal window
hypertask project create-board --file board.json

Example 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"
}
]
}
FlagDescription
--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.

List all saved views for a project, including each view’s ID, title, and visibility.

Terminal window
hypertask view list --project 15
FlagDescription
--project <id>Project ID (required)

Example output:

ID NAME VISIBILITY
view_abc123 Dev Review & QA shared
view_def456 Tests Running shared
view_ghi789 My Open Tasks private

Fetch tasks from a specific saved view, with that view’s filters already applied.

Terminal window
hypertask view get view_abc123
ArgumentDescription
<view-id>The view identifier (from view list)
FlagDescriptionDefault
--limit <n>Max tasks to return50
--offset <n>Pagination offset0
Terminal window
# Discover views, then pull tasks from one
hypertask view list --project 15
hypertask view get view_abc123 --limit 20
# Use JSON output for scripting
hypertask view get view_abc123 --json | jq '.[].title'

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.

Terminal window
hypertask search "dark mode" --project 15 --limit 5
Argument / FlagDescriptionDefault
<query>Search query (required)
--project <id>Restrict search to a project
--limit <n>Maximum results10
--jsonOutput raw JSON instead of the formatted table
Terminal window
# Search and get JSON for scripting
hypertask search "payment bug" --project 15 --json

List all comments on a task, including the full body of each comment.

Terminal window
hypertask comment list HTPR-2992
ArgumentDescription
<ticket>Ticket identifier in PREFIX-NNN format (e.g., HTPR-2992)

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.

Terminal window
hypertask comment add HTPR-2992 --text "<p>Looks good, merging now.</p>"
FlagDescription
--text <text>Comment text (HTML format)
--attach <path-or-url>Attach a local file or URL to the comment (repeatable for multiple attachments)
Terminal window
# Attach a file alongside a comment
hypertask comment add HTPR-2992 \
--text "<p>Screenshot of the issue attached.</p>" \
--attach ./screenshot.png
# Attach a remote URL
hypertask comment add HTPR-2992 \
--text "<p>See the Loom recording for full context.</p>" \
--attach https://www.loom.com/share/abc123

Update an existing comment.

Terminal window
hypertask comment update 8450 --text "<p>Updated: shipped in v2.1.0</p>"
Argument / FlagDescription
<id>Comment ID
--text <text>New comment text (HTML format)

Delete a comment.

Terminal window
hypertask comment delete 8450
ArgumentDescription
<id>Comment ID

List your unread notifications.

Terminal window
hypertask inbox list

Archive one or more notifications by ID, removing them from your active inbox.

Terminal window
hypertask inbox archive 101 102 103
ArgumentDescription
<ids...>One or more notification IDs to archive

Restore one or more previously archived notifications back to your active inbox. The notifications reappear as unread, with their archivedAt timestamp cleared.

Terminal window
hypertask inbox unarchive 101 102
ArgumentDescription
<ids...>One or more notification IDs to restore
Terminal window
# Restore a single notification
hypertask inbox unarchive 301
# Restore several at once
hypertask inbox unarchive 301 302 303

Retrieve your user context, including projects and permissions.

Terminal window
hypertask context

This is useful to verify your identity, see which projects you belong to, and check your role/permissions.


CommandDescription
hypertask capabilitiesDump the full command + option tree as JSON (alias: commands)
hypertask updateUpdate the CLI to the latest version
hypertask auth:statusCheck current authentication status
hypertask auth:login --token <jwt>Save a JWT token directly
hypertask auth:logoutClear saved authentication
hypertask logoutLogout from Hypertask

Terminal window
# 1. Check notifications
hypertask inbox list
# 2. Read the task details (full description included; plain output is complete)
hypertask task get HTPR-2992
# or use the alias
hypertask task show HTPR-2992
# 3. Move it to "Doing"
hypertask task move HTPR-2992 --section "Doing"
# 4. Archive the notification
hypertask inbox archive 101
Terminal window
# 1. Find the project and its members
hypertask project list
hypertask project members 15
# 2. Create the task
hypertask 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 42
Terminal window
# 1. Invite them by email
hypertask project invite 15 --email newmember@example.com
# 2. Confirm they appear in the member list (once they accept)
hypertask project members 15
Terminal window
# List existing sections and their IDs
hypertask project sections 15
# Add a new section
hypertask section create --project 15 --title "In Review"
# Rename a section
hypertask 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 section
hypertask section delete --project 15 --section "Code Review"
Terminal window
# Create a task as a subtask of an existing task
hypertask task create \
--project 15 \
--title "Write unit tests for auth module" \
--parent-task 1234
# Re-parent an existing task under a different parent
hypertask 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 hierarchy
hypertask task tree --ticket HTPR-1234
Terminal window
# List all urgent and high-priority tasks
hypertask task list --project 15 --priority urgent,high
# Review unassigned tasks
hypertask task list --project 15 --assigned-to unassigned
# Search for something specific
hypertask search "payment" --project 15
Section titled “Work from a saved view (recommended for large boards)”
Terminal window
# 1. Discover available views (includes visibility)
hypertask view list --project 15
# 2. Pull tasks from a focused view
hypertask view get view_abc123
# 3. Work the task as normal
hypertask task get HTPR-2992
hypertask task move HTPR-2992 --section "Doing"
hypertask comment add HTPR-2992 --text "<p>Starting work on this now.</p>"
Terminal window
# 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 Done
hypertask task move HTPR-2992 --section "Done"
Terminal window
# Attach files when creating a task
hypertask task create \
--project 15 \
--title "Review design assets" \
--attach ./wireframe.pdf \
--attach ./mockup.png
# Attach a file to an existing task
hypertask task update HTPR-2992 --attach ./final-spec.pdf
# Attach a file or URL alongside a comment
hypertask comment add HTPR-2992 \
--text "<p>Added the updated spec.</p>" \
--attach ./updated-spec.pdf

Discover all CLI capabilities (for agents)

Section titled “Discover all CLI capabilities (for agents)”
Terminal window
# Dump the full command + option tree as JSON
hypertask capabilities --json
# Pipe to jq to find every command that supports --attach
hypertask capabilities --json | jq '[.[] | select(.options[]?.flags | contains("--attach"))]'
# Identify read commands — their plain output is complete and tab-separated
hypertask capabilities --json | jq '[.[] | select(.description | contains("tab-separated"))]'
Terminal window
# Pipe task data to jq
hypertask task list --project 15 --json | jq '.[].title'
# Get a task's priority
hypertask task get HTPR-2992 --json | jq '.priority'
# Search and process results
hypertask search "dark mode" --project 15 --json | jq '.[].ticketNumber'
# For simple reads, plain output is sufficient — no --json needed
hypertask task get HTPR-2992
hypertask comment list HTPR-2992