Inkdown
Start writing

Claude-Code

62 filesยท4 subfolders

Shared Workspace

Claude-Code
codex

05-tasks-system

Shared from "Claude-Code" on Inkdown

Tasks System Architecture

Overview

The Tasks System manages background work in Claude Code. When you run a long command or spawn a sub-agent, it runs as a task - isolated, trackable, and controllable.

Plain text
0000_start_here_index_and_recommended_reading_order.md
0100_project_overview_tech_stack_runtime_modes_and_folder_map.md
0200_startup_flow_entry_points_and_cold_start_sequence.md
0300_codebase_modules_layers_state_models_and_schemas.md
0400_system_architecture_and_design_rationale.md
0500_interactive_repl_request_flow_end_to_end.md
0600_headless_sdk_and_print_mode_request_flow_end_to_end.md
0700_mcp_integration_connection_and_tool_call_flow.md
0800_external_services_sdks_storage_and_local_dependencies.md
0900_environment_variables_settings_feature_flags_and_failure_modes.md
1000_non_obvious_patterns_gotchas_and_debugging_traps.md
1100_full_codebase_file_inventory_grouped_by_directory.md
kimi
00-overview.md
01-entrypoints.md
02-state-management.md
03-query-system.md
04-tools-system.md
05-tasks-system.md
06-ui-components.md
07-bridge-remote.md
08-services.md
09-skills-plugins.md
10-commands.md
11-testing-architecture.md
12-permission-system.md
13-build-system.md
14-ink-internals.md
15-git-internals.md
16-context-compaction.md
17-vim-mode.md
18-mailbox-notifications.md
19-session-persistence.md
20-hooks-system.md
21-error-recovery.md
README.md
qwen
00-overview.md
01-entry-points.md
02-query-engine.md
03-tools-and-tasks.md
04-commands-and-skills.md
05-state-management.md
06-ink-rendering.md
07-bridge-remote.md
08-mcp-services.md
09-services-overview.md
10-multi-agent.md
11-system-prompt-constants.md
12-tool-interface.md
13-memory-system.md
14-buddy-companion.md
15-keybindings.md
16-stop-hooks.md
17-vim-mode.md
18-upstreamproxy.md
19-cost-tracking-history.md
20-contexts-styles-onboarding.md
21-hooks.md
22-screens.md
tweets-explain
claude-code-memory-analysis.md
compact
memory-system
agentic-architecture

Core Files

FilePurpose
Task.tsTask type definitions + ID generation
tasks.tsTask registry and getAllTasks()
tasks/[Type]Task/[Type]Task.tsxIndividual task implementations
tasks/stopTask.tsTask termination logic
tasks/types.tsShared task type definitions

Task State Machine

TypeScript
State Transitions
Plain text

Task Types

1. LocalShellTask

Purpose: Execute bash/shell commands in background.

TypeScript
2. LocalAgentTask

Purpose: Spawn a sub-agent (autonomous AI worker).

TypeScript

Key Difference: Agents can use tools autonomously; shells just run commands.

3. RemoteAgentTask

Purpose: Spawn an agent on a remote (cloud) environment.

TypeScript
4. DreamTask

Purpose: Background compaction/summarization.

TypeScript

Task State Structure

TypeScript

Task ID Generation

TypeScript

Why 36^8? ~2.8 trillion combinations - resists brute-force symlink attacks.


Task Creation Flow

Plain text

Task Execution: LocalShellTask

TypeScript

Reading Task Output

Tasks write to disk files, not memory. Reading is streaming:

TypeScript

Task Killing

TypeScript
Kill Strategies by Type
Task TypeKill Strategy
local_bashSIGTERM โ†’ wait โ†’ SIGKILL
local_agentAbortController + signal agents
remote_agentRemote API call to kill
dreamUsually no-op (background)

TaskGet Tool

The TaskGetTool retrieves task output:

TypeScript

Task UI Components

TypeScript

Foregrounding Tasks

Users can "foreground" a task to see its output in the main view:

TypeScript

Key Concepts

1. Disk-Backed Output

Task output goes to files, not memory. This:

  • Prevents memory bloat
  • Survives crashes
  • Allows streaming reads
2. Status-Driven UI

UI reacts to status changes. No direct process management in components.

3. Type-Specific Logic

Each task type handles its own spawning and killing. Common interface, specialized implementations.

4. Observable State

All task state is in AppState. Anyone can observe tasks.

5. Graceful Termination

SIGTERM first, SIGKILL only if needed. Allows cleanup.


Common Patterns

Starting a Background Task
TypeScript
Waiting for Task Completion
TypeScript

Related Documentation

  • State Management - How task state works
  • Tools System - How tools create tasks
  • Query System - How tasks relate to queries