Skip to content

tag

The tag command manages tags: short, colored labels you attach to tasks for categorization and filtering.

Terminal window
kasl tag [COMMAND]
Subcommand Purpose
add Add a new tag
list List all available tags
show Show a tag and the tasks that carry it
edit Edit an existing tag’s name/color
remove Remove a tag and unassign it from all tasks
Terminal window
kasl tag add <NAME> [OPTIONS]
  • NAME: unique name for the tag. Required.
  • -c, --color <COLOR>: optional color - a common name (“red”, “blue”, “green”, “yellow”, “purple”, “orange”) or a hex code (“#FF6B6B”).
Terminal window
kasl tag add "urgent" --color red
kasl tag add "frontend" --color "#FF6B6B"

Tags are also created implicitly: kasl task add --tags "new-tag,urgent" creates any tag in the list that does not already exist.

Terminal window
kasl tag list [--json]

Displays a table of all tags with their ID, name, and color.

  • --json: Print them as one JSON document - see JSON output.
Terminal window
kasl tag show <TAG> [--json]
  • TAG: tag name or ID. Required.
  • --json: Print the tag and its tasks as one JSON document - see JSON output.

Shows the tag and every task currently assigned to it - each day’s row of a task that ran over several days, since a tag belongs to the task and not to the day it was put on. A tag that does not exist is an error (exit code 1), so a script can tell it from a tag that carries no tasks.

Terminal window
kasl tag edit [TAG]
  • TAG: tag name or ID to edit. Omit it on a terminal to pick from the list.

Prompts interactively for a new name and color. This command is interactive only - it has no flags for scripting.

Terminal window
kasl tag remove [TAG] [OPTIONS]
  • TAG: tag name or ID to remove. Omit it on a terminal to pick from the list.
  • -y, --yes: remove without asking for confirmation.

Removing a tag unassigns it from every task that carries it; the tasks themselves are untouched.

Tags are assigned only when a task is created, via kasl task add --tags:

Terminal window
kasl task add --name "Fix login bug" --tags "urgent,bug"

There is no way to add or remove tags on an existing task - kasl task edit only changes name, comment, and completeness.

Terminal window
kasl task list --tag "urgent"
Terminal window
# Create a couple of tags
kasl tag add "frontend" --color blue
kasl tag add "urgent" --color red
# List them
kasl tag list
# Create a task carrying both
kasl task add --name "Update UI" --tags "frontend,urgent"
# Filter tasks by tag
kasl task list --tag "urgent"
# Rename a tag interactively
kasl tag edit "urgent"
# Remove a tag without confirmation
kasl tag remove "urgent" -y
$ kasl tag add urgent --color red
✅ Tag 'urgent' created successfully.
$ kasl tag list
Tags:
+----+--------+-------+
| ID | NAME | COLOR |
+----+--------+-------+
| 1 | urgent | red |
+----+--------+-------+
$ kasl tag remove urgent -y
✅ Tag 'urgent' deleted successfully.

tag edit prints ✅ Tag '{new-name}' updated successfully. after its prompts; it has no other output to show statically since the prompts themselves depend on the terminal.

kasl tag list --json and kasl tag show --json print one document each (conventions: kasl in scripts and CI):

{
"tags": [
{ "id": 1, "name": "backend", "color": "blue" },
{ "id": 2, "name": "db", "color": null }
]
}
{
"tag": { "id": 2, "name": "db", "color": null },
"tasks": [
{
"id": 3,
"chain_id": 3,
"created_at": "2026-08-08T10:05:41",
"name": "PROJ-419 Draft migration for protected pauses",
"comment": "backfill pending",
"completeness": 60,
"tags": ["backend", "db"],
"issue_key": null
}
]
}

A task has the shape task list --json prints.

  • task - create and manage tasks, including assigning tags
  • report - view tasks organized by tags
  • export - export task data with tag information