/subtask lets the current agent spin up a separate, bounded worker session for
one specific piece of work. The worker runs as an orchestrator in a real child
session, completes the requested task, and sends a structured summary back to
the original conversation.
Use it when a bounded, context-heavy task only needs to return a compact result to the main thread.
/subtask <focused task for the worker>
Examples:
/subtask update the subtask docs and run the relevant checks
/subtask investigate why the auth retry test is flaky and report findings
/subtask implement the small button spacing polish in the settings panel
Keep the request narrow. A good subtask has a clear finish line.
- The
/subtaskcommand asks the current agent to prepare a self-contained worker prompt. - The agent calls the
subtasktool with that prompt and any clearly relevant files. - Slim creates a real child session with
parentIDpointing at the current session. - The child session runs as
orchestrator, so it can use normal tools and specialist delegation when useful. - Referenced files are injected as synthetic Read-tool context before the worker starts.
- If the worker needs missing conversation details, it can call
read_sessionto inspect only the source session that spawned it. - When finished, the worker returns a
<subtask_summary>with status, changes, files touched, validation, and follow-up notes. - Slim extracts the summary, returns it to the original session, and aborts the child session for cleanup.
In tmux or zellij, the subtask appears like other child-agent work because it is a real child session. Existing depth limits and pane cleanup handling apply.
If the parent session has an active Session Goal, the worker inherits it as context. The explicit subtask request still defines the worker's scope.
The worker prompt is intentionally bounded:
- complete only the requested task,
- do not broaden scope,
- do not spawn another subtask,
- use
read_sessiononly when needed context is missing, - run the most relevant validation checks when practical,
- stop when the requested task is done.
This keeps subtasks useful for focused execution rather than turning them into a second open-ended conversation.
| Tool | Purpose |
|---|---|
subtask |
Creates a child worker session and returns its summary |
read_session |
Lets a subtask worker read the source session that spawned it |
read_session is restricted to subtask workers and only allows reading the
source session. It is not a general transcript-reading tool.
Files can be passed explicitly with the files argument or referenced in the
worker prompt with @path syntax. Slim resolves those paths inside the current
workspace and injects readable text files as synthetic context.
Safety rules:
- paths must stay inside the workspace real path,
- symlinks that resolve outside the workspace are skipped,
- binary files are skipped,
- large files are capped before injection,
- unreadable or missing files are skipped.
The worker is instructed to finish with:
<subtask_summary>
Status: completed | blocked | partial
What changed:
- ...
Files touched:
- ...
Validation:
- ...
Risks / follow-up:
- ...
</subtask_summary>
The parent session receives that summary as normal tool output.
