Skip to main content

Task & Schedule Commands

Tasks and schedules are how security tests get executed on your fleet. A task is a one-time execution order sent to one or more agents. A schedule automates recurring task creation.

Task Commands

achilles tasks <subcommand> [flags]

Alias: t

Subcommands

SubcommandDescription
createCreate test execution tasks
commandExecute an arbitrary command on agents
updateCreate agent update tasks
uninstallCreate uninstall tasks
listList tasks with filters
groupedList tasks grouped by batch
showShow task details
cancelCancel a pending/assigned task
deleteDelete a completed/failed/expired task
notesUpdate task notes

Task Lifecycle

Tasks progress through these states:

tasks create

Create security test execution tasks for one or more agents.

achilles tasks create --test <uuid> --agents <id1,id2,...> [flags]

Flags:

FlagTypeRequiredDescription
--teststringYesTest UUID from the test library
--agentsstringYesComma-separated agent IDs
--timeoutnumberNoExecution timeout in seconds
--prioritynumberNoPriority level (0-10)

Example:

# Run a test on two agents
achilles tasks create \
--test 7659eeba-f315-440e-9882-4aa015d68b27 \
--agents a1b2c3d4,e5f6g7h8

# With priority and timeout
achilles tasks create \
--test 7659eeba-f315-440e-9882-4aa015d68b27 \
--agents a1b2c3d4 \
--priority 8 \
--timeout 300
  ✓ Created 2 task(s)
Task IDs: ["task-uuid-1", "task-uuid-2"]

tasks command

Execute an arbitrary shell command on one or more agents.

achilles tasks command --cmd <command> --agents <id1,id2,...> [flags]

Flags:

FlagTypeRequiredDescription
--cmdstringYesShell command to execute
--agentsstringYesComma-separated agent IDs
--timeoutnumberNoExecution timeout in seconds

Example:

# Run a diagnostic command on agents
achilles tasks command \
--cmd "systeminfo | findstr /B /C:OS" \
--agents a1b2c3d4,e5f6g7h8

tasks update

Push the latest agent binary version to agents.

achilles tasks update --agents <id1,id2,...>

Example:

achilles tasks update --agents a1b2c3d4,e5f6g7h8,i9j0k1l2

tasks uninstall

Create tasks to remove the agent software from endpoints.

achilles tasks uninstall --agents <id1,id2,...> [flags]

Flags:

FlagTypeDescription
--agentsstringComma-separated agent IDs (required)
--cleanupbooleanPerform cleanup after uninstall
warning

Uninstall tasks will remove the agent from the target endpoints. This is a destructive operation.

tasks list

List tasks with optional filters and pagination.

achilles tasks list [flags]

Flags:

FlagTypeChoicesDescription
--statusstringpending, assigned, downloading, executing, completed, failed, expiredFilter by status
--typestringexecute_test, update_agent, uninstall, execute_commandFilter by type
--agent-idstringFilter by agent ID
--searchstringSearch test name or command
--limitnumberMax results (default: 50)
--offsetnumberPagination offset (default: 0)

Example:

# List all pending tasks
achilles tasks list --status pending

# Find failed test executions
achilles tasks list --status failed --type execute_test

# Search by test name
achilles tasks list --search "T1059"

Example output:

  ID          Type              Host              Status        Test/Cmd               Created
───────── ─────────────── ──────────────── ──────────── ──────────────────── ────────────
f1a2b3c4… execute_test prod-web-01 ● completed T1059-PowerShell 2h ago
d5e6f7g8… execute_test dev-db-03 ● failed T1486-Ransomware 3h ago
h9i0j1k2… update_agent staging-api-02 ◷ pending — 5m ago

tasks grouped

View tasks grouped by batch (all tasks created in a single operation).

achilles tasks grouped [flags]

Flags:

FlagTypeDescription
--statusstringFilter by status
--typestringFilter by type
--limitnumberMax results (default: 20)

tasks show

Show detailed information about a task, including its execution result.

achilles tasks show <id>

Example:

achilles tasks show f1a2b3c4-5678-9abc-def0-123456789abc

The output includes task metadata (type, status, agent, priority, timestamps) and, if completed, the execution result (exit code, hostname, duration).

tasks cancel

Cancel a task that is still pending or assigned.

achilles tasks cancel <id>

tasks delete

Delete a task that is completed, failed, or expired.

achilles tasks delete <id>

tasks notes

Add or update notes on a task.

achilles tasks notes <id> <content>

Example:

achilles tasks notes f1a2b3c4 "False positive — AV quarantined test binary"

Schedule Commands

achilles schedules <subcommand> [flags]

Subcommands

SubcommandDescription
createCreate a new recurring schedule
listList schedules
showShow schedule details
updateUpdate a schedule (pause/resume/modify)
deleteDelete a schedule

schedules create

Create a new recurring test schedule.

achilles schedules create \
--test <uuid> \
--agents <id1,id2,...> \
--type <schedule-type> \
--config <json> \
[flags]

Flags:

FlagTypeRequiredDefaultDescription
--namestringNoSchedule display name
--teststringYesTest UUID
--agentsstringYesComma-separated agent IDs
--typestringYesSchedule type: once, daily, weekly, monthly
--configstringYesSchedule configuration as JSON
--timezonestringNoUTCTimezone for scheduling

Schedule config format by type:

TypeConfig ExampleDescription
once{"time":"2026-03-20T14:00:00Z"}Run once at specified time
daily{"time":"14:00"}Run daily at specified time
weekly{"time":"09:00","day_of_week":1}Run weekly (0=Sun, 1=Mon, ..., 6=Sat)
monthly{"time":"08:00","day_of_month":15}Run monthly on specified day

Examples:

# Daily scan at 2 PM UTC
achilles schedules create \
--name "Daily Ransomware Check" \
--test 7659eeba-f315-440e-9882-4aa015d68b27 \
--agents a1b2c3d4,e5f6g7h8 \
--type daily \
--config '{"time":"14:00"}'

# Weekly scan on Mondays at 9 AM Europe/London
achilles schedules create \
--name "Weekly Full Scan" \
--test abc12345-def6-7890-abcd-ef1234567890 \
--agents a1b2c3d4 \
--type weekly \
--config '{"time":"09:00","day_of_week":1}' \
--timezone Europe/London

schedules list

List all schedules with optional status filter.

achilles schedules list [flags]

Flags:

FlagTypeChoicesDescription
--statusstringactive, paused, completed, deletedFilter by status

Example:

achilles schedules list
achilles schedules list --status active

Example output:

  ID          Name              Test                  Type      Status      Next Run    Agents
───────── ──────────────── ──────────────────── ──────── ────────── ────────── ───────
s1a2b3c4… Daily Ransom… T1486-Ransomware daily ⏱ active 2h 3
s5e6f7g8… Weekly Full… CyberHygiene-Bun… weekly ⏱ active 5d 5
s9h0i1j2… One-time test T1059-PowerShell once ✓ completed — 1

schedules show

Show detailed information about a schedule.

achilles schedules show <id>

Output includes: ID, name, test name, schedule type, configuration, timezone, status, next/last run times, target agents, priority, creator, and creation timestamp.

schedules update

Pause, resume, or modify a schedule.

achilles schedules update <id> [flags]

Flags:

FlagTypeDescription
--pausebooleanPause the schedule
--resumebooleanResume a paused schedule
--configstringNew schedule config JSON
--namestringNew display name

Examples:

# Pause a schedule
achilles schedules update s1a2b3c4 --pause

# Resume a schedule
achilles schedules update s1a2b3c4 --resume

# Change the schedule time
achilles schedules update s1a2b3c4 --config '{"time":"16:00"}'

schedules delete

Permanently delete a schedule.

achilles schedules delete <id>