Features

Task Management

Complete task management operations with Asana CLI

Task Management

Comprehensive task management features for creating, listing, completing, and deleting Asana tasks from the command line.

Create Tasks

Basic Task Creation

Create a simple task with just a name:

bun run dev task create -n "Task name" -w WORKSPACE_ID

Task with Description

bun run dev task create \
  -n "Implement authentication" \
  -d "Add OAuth 2.0 and JWT support for user authentication" \
  -w WORKSPACE_ID

Task in a Project

Assign a task to a specific project:

bun run dev task create \
  -n "Fix login bug" \
  -p PROJECT_ID \
  -w WORKSPACE_ID

Task with Assignee

Assign a task to a specific user:

bun run dev task create \
  -n "Review code changes" \
  -a USER_ID \
  -w WORKSPACE_ID

Task with Due Date

Set a deadline for the task:

bun run dev task create \
  -n "Submit quarterly report" \
  --due 2025-12-31 \
  -w WORKSPACE_ID

Complete Task Creation

Create a task with all options:

bun run dev task create \
  -n "Update user documentation" \
  -d "Add examples and screenshots to user guide" \
  -p PROJECT_ID \
  -a USER_ID \
  --due 2025-11-30 \
  -w WORKSPACE_ID

Output Formats

All task commands support multiple output formats via the --format flag:

TOON Format (Default)

Token-efficient format optimized for LLM interactions (30-60% fewer tokens than JSON):

bun run dev task list -a me -w WORKSPACE_ID --format toon

Output example:

tasks[3]{gid,name,completed}:
  "1234567890",Setup authentication,true
  "1234567891",Add task commands,false
  "1234567892",Write documentation,false

JSON Format

Machine-readable format for scripts and automation:

bun run dev task list -a me -w WORKSPACE_ID --format json

Output example:

{
  "tasks": [
    { "gid": "1234567890", "name": "Setup authentication", "completed": true },
    { "gid": "1234567891", "name": "Add task commands", "completed": false }
  ]
}

Plain Format

Traditional human-readable CLI output:

bun run dev task list -a me -w WORKSPACE_ID --format plain

Output example:

Tasks (3):

✓ 1234567890 - Setup authentication
○ 1234567891 - Add task commands
○ 1234567892 - Write documentation

List Tasks

List Your Tasks

View all tasks assigned to you:

bun run dev task list -a me -w WORKSPACE_ID

List Project Tasks

View all tasks in a specific project:

bun run dev task list -p PROJECT_ID

Include Completed Tasks

By default, only incomplete tasks are shown. Include completed tasks:

bun run dev task list -a me -c -w WORKSPACE_ID

List Tasks for Another User

View tasks assigned to a specific user:

bun run dev task list -a USER_ID -w WORKSPACE_ID

View Task Details

Get detailed information about a specific task:

bun run dev task get TASK_ID

This displays:

  • Task name
  • Description
  • Assignee
  • Due date
  • Projects
  • Completion status
  • Created and modified dates

Update Tasks

Modify existing task properties:

Update Task Name

bun run dev task update TASK_ID --name "New task name"

Update Task Description

bun run dev task update TASK_ID --notes "Updated description with more details"

Update Task Assignee

bun run dev task update TASK_ID --assignee USER_ID

Update Due Date

bun run dev task update TASK_ID --due-on 2025-12-31

Update Start Date

bun run dev task update TASK_ID --start-on 2025-11-01

Mark Task Complete or Incomplete

# Mark as complete
bun run dev task update TASK_ID --completed true

# Mark as incomplete
bun run dev task update TASK_ID --completed false

Update Multiple Fields

You can update multiple fields in a single command:

bun run dev task update TASK_ID \
  --name "Revised task name" \
  --notes "Updated description" \
  --due-on 2025-12-15 \
  --assignee USER_ID

Move Tasks

Move a task to a different project:

Move to Project

bun run dev task move TASK_ID --project PROJECT_ID

Move to Project and Section

Move a task to a specific section within a project:

bun run dev task move TASK_ID --project PROJECT_ID --section SECTION_ID
Note: The move command removes the task from all current projects and adds it to the specified project. If you want a task in multiple projects, use the update command with project options.

Complete Tasks

Mark a task as complete:

bun run dev task complete TASK_ID

The task will be marked as completed but remains in the system for record-keeping.

Alternative: You can also use task update TASK_ID --completed true for more flexibility.

Delete Tasks

Permanently delete a task:

bun run dev task delete TASK_ID
Warning: This action cannot be undone. The task will be permanently removed from Asana.

Command Options

Common Options

All task commands support these options:

  • -w, --workspace <id> - Workspace ID (required for most operations)
  • -p, --project <id> - Project ID
  • -a, --assignee <id> - User ID or "me" for yourself

Create Options

  • -n, --name <string> - Task name (required)
  • -d, --notes <string> - Task description/notes
  • --due <date> - Due date (YYYY-MM-DD format)

Update Options

  • -n, --name <string> - Update task name
  • -d, --notes <string> - Update task description/notes
  • -a, --assignee <id> - Update assignee
  • --due-on <date> - Update due date (YYYY-MM-DD format)
  • --start-on <date> - Update start date (YYYY-MM-DD format)
  • -c, --completed <boolean> - Mark as completed (true) or incomplete (false)

Move Options

  • -p, --project <id> - Target project ID (required)
  • -s, --section <id> - Target section ID (optional)

List Options

  • -c, --completed - Include completed tasks

Practical Examples

Daily Standup Workflow

# Check your tasks for today
bun run dev task list -a me -w WORKSPACE_ID

# Create follow-up tasks
bun run dev task create -n "Follow up on PR review" -w WORKSPACE_ID

# Update task with new information
bun run dev task update TASK_ID \
  --notes "Discussed with team, approved for merge" \
  --due-on 2025-10-31

# Complete finished tasks
bun run dev task complete TASK_ID

Project Management

# View all project tasks
bun run dev task list -p PROJECT_ID

# Add new task to project
bun run dev task create \
  -n "Implement search feature" \
  -p PROJECT_ID \
  -w WORKSPACE_ID

# Move task to different project
bun run dev task move TASK_ID --project NEW_PROJECT_ID

Team Collaboration

# Assign task to team member
bun run dev task create \
  -n "Review API documentation" \
  -a TEAM_MEMBER_ID \
  --due 2025-10-30 \
  -w WORKSPACE_ID

# Reassign task to different team member
bun run dev task update TASK_ID --assignee OTHER_TEAM_MEMBER_ID

# Update task deadline
bun run dev task update TASK_ID --due-on 2025-11-15

Task Lifecycle Management

# Create a new task
bun run dev task create -n "Build new feature" -w WORKSPACE_ID

# Add details as work progresses
bun run dev task update TASK_ID \
  --notes "Started implementation, using React hooks pattern"

# Extend deadline if needed
bun run dev task update TASK_ID --due-on 2025-12-01

# Move to different project phase
bun run dev task move TASK_ID --project TESTING_PROJECT_ID

# Mark as complete when done
bun run dev task complete TASK_ID

Tips & Best Practices

Pro Tip: Use environment variables to avoid repeating workspace IDs:

export ASANA_WORKSPACE=your_workspace_id

Then you can omit the -w flag in many commands (depending on implementation).

Finding IDs:

  • Workspace ID: Check the URL when viewing your workspace in Asana
  • Project ID: Look at the URL when viewing a project
  • User ID: Available through the Asana API or web interface ::