Progress#
The progress tool lets a subagent send an intermediate status update to its
parent orchestrator without stopping the session — the counterpart to
complete (ends the session) and clarify (pauses it). The update arrives
as a ⏳ system message via the parent’s LOOP_CONTINUE hook.
The tool is opt-in and enabled automatically for subagents; enable it explicitly
with -t +progress.
Progress tool — subagents use this to send intermediate updates to the parent.
Registers the progress block type so subagents can report status mid-task
without stopping their session. The parent orchestrator receives these updates
via the LOOP_CONTINUE hook as ⏳ system messages, enabling the “fire-and-forget-
then-get-alerted-when-update/done” pattern alongside complete and clarify.
Unlike complete (ends session) and clarify (pauses session), progress
continues execution after delivering the update.
Delivery modes:
Thread-mode subagents: uses the in-process
_progress_queue; the parent’s LOOP_CONTINUE hook picks it up on the next iteration.Subprocess-mode subagents: writes JSON lines to
GPTME_PROGRESS_FILE(set by the parent before spawning); the parent’s monitor thread polls that file and delivers updates via the same hook path.
Only enabled in autonomous/subagent sessions (disabled_by_default=True).
- gptme.tools.progress.execute_progress(code: str | None, args: list[str] | None, kwargs: dict[str, str] | None) Generator[Message, None, None]
Send an intermediate progress update to the parent orchestrator.
In thread mode: reads the current agent_id from thread-local storage (set by _create_subagent_thread) and pushes the update to the shared _progress_queue. The parent’s LOOP_CONTINUE hook delivers it as a ⏳ system message.
In subprocess mode: writes the update to the file pointed to by GPTME_PROGRESS_FILE (set by the parent). The parent’s monitor thread polls that file and delivers the update via the same hook path.