This prompt is designed for a single, critical job: when an AI agent hits its execution budget, capability boundary, or a configured stop condition and cannot complete its assigned task, it must produce a structured handoff artifact. The ideal user is an AI platform engineer, orchestration developer, or product manager building a multi-agent system where tasks are expensive to lose. The required context includes the agent's original task definition, its execution trace, the current state of all relevant data, and the specific reason for the incomplete termination. Without this, the handoff is just a dead end, forcing a human or another agent to reverse-engineer the failure from raw logs.
Prompt
Handoff Prompt for Incomplete Agent Tasks

When to Use This Prompt
Define the job, reader, and constraints for the incomplete agent task handoff prompt.
This prompt is not a generic error message or a simple status update. It must be used when the cost of losing partial progress is high—think long-running research tasks, multi-step data extraction jobs, or compliance reviews where an agent has already invested significant compute. The output must be machine-parseable and human-actionable, containing the exact state required to resume work without replaying completed steps. A concrete implementation would wire this prompt into an agent's on_failure or on_budget_exceeded hook, passing the agent's internal trace, tool call history, and any intermediate outputs as the [PARTIAL_RESULTS] and [EXECUTION_TRACE] variables. The harness should validate that the output schema includes a resumable state object, not just a natural language summary.
Do not use this prompt for tasks that failed immediately with no useful progress, for agents that can simply retry with a longer budget, or for workflows where the cost of a clean restart is lower than the complexity of a stateful resume. Before implementing, ensure your orchestration layer can serialize and deserialize the [RESUMPTION_STATE] object so a downstream agent or human can pick up the task without manual reconstruction. The next step after generating this handoff is to route it to the appropriate escalation path—either a human review queue, a more capable agent, or a supervisor agent that can re-plan the remaining work.
Use Case Fit
Where the Handoff Prompt for Incomplete Agent Tasks works, where it fails, and what you must provide to make it production-safe.
Good Fit: Bounded Agent Loops
Use when: An agent has a strict execution budget (steps, time, or tokens) and must exit cleanly before exceeding it. The prompt structures partial results so a human or downstream agent can resume without replaying the entire task. Guardrail: Enforce a hard stop in the agent harness that triggers this handoff template before the budget is exhausted, leaving room for the handoff message itself.
Bad Fit: Trivial or Stateless Tasks
Avoid when: The task is a single-turn lookup, a simple classification, or a stateless generation with no intermediate progress to preserve. Adding a structured handoff to a one-shot completion adds latency and token overhead with no recovery benefit. Guardrail: Check task complexity at the orchestration layer; only invoke this prompt when task.steps_remaining > 0 and task.state is non-trivial.
Required Inputs
What you must provide: The agent's original objective, a step-by-step log of completed actions, the exact state snapshot needed to resume (tool outputs, intermediate data, variable bindings), and a list of pending sub-tasks with estimated effort. Guardrail: Validate that the state snapshot is serializable and complete before the handoff prompt runs. A missing variable or truncated tool output makes the handoff useless.
Operational Risk: State Drift
What to watch: The handoff captures state at time T, but external systems (databases, APIs, file stores) may change before a human or agent resumes the task. The resumed task acts on stale assumptions. Guardrail: Include a state_captured_at timestamp and a state_volatility flag in the handoff payload. The resuming agent must re-validate critical state before acting.
Operational Risk: Incomplete Reasoning Trace
What to watch: The agent reports what it did but not why it made specific decisions. The human reviewer cannot assess whether the partial work is trustworthy and may resume from a flawed intermediate state. Guardrail: Require the agent to include a decision_rationale field for each completed step, not just the action log. Test handoff outputs for the presence of reasoning, not just task status.
Operational Risk: Handoff Fatigue
What to watch: Agents hand off too frequently for low-impact incomplete tasks, flooding human reviewers with partial-work summaries that require context-switching. Reviewers start ignoring or rubber-stamping handoffs. Guardrail: Set a materiality threshold in the orchestration layer. Only trigger the handoff prompt when remaining work exceeds a minimum effort estimate or when the task carries a high-risk classification.
Copy-Ready Prompt Template
A reusable prompt template for structuring a partial-results handoff when an agent cannot complete a task within its execution budget or capability.
The following prompt template is designed to be injected into an agent's context when it has exhausted its step budget, encountered an unrecoverable tool failure, or determined that the remaining work is outside its capability boundary. It forces the agent to produce a structured handoff payload that a human operator or a downstream agent can consume without reconstructing state from raw logs. The template uses square-bracket placeholders that your application must populate before sending the prompt to the model.
textSYSTEM: You are an agent that has been unable to complete the assigned task within your execution budget or capability boundary. You must now produce a structured handoff so that a human operator or another agent can resume the work without data loss. TASK_CONTEXT: [ORIGINAL_TASK_DESCRIPTION] WORK_COMPLETED: [COMPLETED_STEPS_AND_OUTPUTS] CURRENT_STATE: [INTERMEDIATE_RESULTS_AND_ARTIFACTS] FAILURE_REASON: [WHY_THE_TASK_COULD_NOT_BE_COMPLETED] EXECUTION_BUDGET_REMAINING: [STEPS_OR_TOKENS_REMAINING] INSTRUCTIONS: Produce a JSON handoff payload with the following structure. Do not include any text outside the JSON object. { "handoff_type": "incomplete_task", "agent_id": "[AGENT_IDENTIFIER]", "task_id": "[TASK_IDENTIFIER]", "status": "partial_complete", "summary": "<One-paragraph summary of what was accomplished and why the task is incomplete.>", "completed_work": [ { "step": "<Step description>", "outcome": "<What was produced or determined>", "artifacts": ["<Reference to any saved outputs, files, or data>"] } ], "remaining_work": [ { "step": "<Next step that must be completed>", "estimated_effort": "<Low | Medium | High | Unknown>", "dependencies": ["<What must be true before this step can start>"], "required_inputs": ["<Data, decisions, or context needed to proceed>"] } ], "current_state": { "variables": {"<key>": "<value>"}, "open_decisions": ["<Decisions that are still pending>"], "blockers": ["<What is preventing completion>"] }, "resume_instructions": "<Step-by-step instructions for a human or agent to pick up where you left off. Include exact commands, API calls, or queries if applicable.>", "confidence_assessment": { "completed_work_confidence": "<High | Medium | Low>", "remaining_effort_confidence": "<High | Medium | Low>", "notes": "<Any caveats about the quality or completeness of the work done so far.>" }, "escalation_recommendation": "<Whether this should go to a human reviewer, a specialized agent, or be retried with different parameters.>" } CONSTRAINTS: - Do not fabricate completed work. Only report steps you actually executed. - If you are uncertain about the quality of a completed step, flag it in confidence_assessment.notes. - The resume_instructions field must be specific enough that a new agent or human can resume without reading your full execution trace. - If any artifacts are stored externally, include retrieval paths or identifiers. - If the task involves regulated data or high-risk actions, set escalation_recommendation to "human_review_required".
To adapt this template for your application, replace each square-bracket placeholder with live data from your agent's execution context. The [ORIGINAL_TASK_DESCRIPTION] should contain the user's original request verbatim. [COMPLETED_STEPS_AND_OUTPUTS] should be a structured log of what the agent actually did, not what it planned to do. [INTERMEDIATE_RESULTS_AND_ARTIFACTS] must include pointers to any saved state, files, or database records so the handoff is self-contained. If your agent framework tracks step counts or token usage, populate [STEPS_OR_TOKENS_REMAINING] with the actual remaining budget to help the model decide how much detail to include. For high-risk domains such as healthcare, finance, or legal workflows, add an additional constraint requiring the agent to flag any completed work that may need human verification before the next agent acts on it.
Prompt Variables
Placeholders required by the Handoff Prompt for Incomplete Agent Tasks. Each variable must be populated before the prompt is assembled and sent to the model. Missing or malformed variables will cause the handoff to be rejected by downstream systems or human reviewers.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[AGENT_ID] | Unique identifier for the agent producing the handoff | billing-reconciliation-agent-v2 | Must match a known agent ID in the orchestration registry. Reject if null or not in allowlist. |
[TASK_ID] | Unique identifier for the task being handed off | task-2025-03-21-0042 | Must be a non-empty string. Validate format against task ID convention. Reject if null. |
[ORIGINAL_OBJECTIVE] | The full objective the agent was originally assigned | Reconcile Q4 2024 invoice line items against payment records and flag discrepancies over $500 | Must be a non-empty string of at least 20 characters. Reject if truncated or placeholder text detected. |
[COMPLETED_WORK_SUMMARY] | Structured summary of what the agent accomplished before hitting its limit | Processed 847 of 1,203 invoices. Identified 12 discrepancies. 356 invoices remain unprocessed. | Must contain quantifiable progress indicators. Reject if empty or contains only qualitative statements without counts. |
[REMAINING_WORK_ITEMS] | Explicit list of work items not yet started or partially complete | ["Reconcile invoices #1204-#1560", "Verify payment records for March 2025 batch", "Generate final discrepancy report"] | Must be a valid JSON array of strings. Reject if empty array or if items are vague. Minimum 1 item required. |
[RESUMPTION_STATE] | Serialized state object needed to resume execution without replaying completed work | {"last_processed_invoice_id": 1203, "cursor_position": 847, "intermediate_results": {...}} | Must be valid JSON. Schema must include cursor or checkpoint fields. Reject if state is empty object or missing required checkpoint keys. |
[ESTIMATED_REMAINING_EFFORT] | Estimated effort to complete remaining work, expressed in time or steps | Approximately 45 minutes or 356 API calls remaining | Must include a unit of measure. Reject if null or contains only qualitative terms like 'some' or 'a bit' without quantification. |
[FAILURE_REASON] | Specific reason the agent could not complete the task | Execution budget exhausted after 10-minute timeout. Task requires approximately 15 minutes total. | Must be one of: budget_exhausted, capability_gap, tool_failure, permission_denied, ambiguity_detected, or policy_block. Reject if not in enum. |
Implementation Harness Notes
How to wire the handoff prompt into an agent orchestration layer with validation, state management, and resumption logic.
The handoff prompt for incomplete agent tasks is not a standalone chat interaction; it is a programmatic checkpoint inside an agent execution loop. The orchestration layer must invoke this prompt when the agent reaches a termination condition—such as exhausting its step budget, hitting a tool failure it cannot recover from, or encountering an input outside its capability boundary. The prompt receives the agent's current state, partial results, and the reason for termination, then produces a structured handoff payload that a downstream agent or human reviewer can consume without reconstructing context from raw logs.
To integrate this prompt, wrap it in a function that accepts a typed input object: agent_id, task_id, termination_reason (enum: STEP_BUDGET_EXHAUSTED, TOOL_FAILURE, CAPABILITY_GAP, TIMEOUT), completed_steps (ordered list of step descriptions with outputs), remaining_steps (ordered list of pending steps with dependencies), current_state_snapshot (serialized agent memory or blackboard state), and error_log (if applicable). The prompt template's [PARTIAL_RESULTS] placeholder should be populated with a structured JSON dump of this input, not raw conversation text. After the model returns the handoff summary, validate the output against a schema that requires handoff_summary, accomplished, remaining, estimated_remaining_effort, resumption_instructions, and blockers fields. Reject any output missing these fields and retry with a stricter schema reminder.
For production reliability, implement a retry policy with a maximum of two attempts. On the first validation failure, append the validation errors to the retry prompt and request a corrected output. If the second attempt also fails, log the raw output and the input state to an observability system, then fall back to a minimal handoff constructed from the structured input alone—this ensures the task is never silently dropped. Store the validated handoff payload in the task's state record with a timestamp and the model version used. When a human reviewer or downstream agent picks up the task, the orchestration layer must load this handoff record and present it as the starting context, not the raw agent trace. Test this flow end-to-end with simulated incomplete tasks across all termination reasons before deploying to production.
Model choice matters here: prefer models with strong instruction-following and structured output capabilities, such as Claude 3.5 Sonnet or GPT-4o, because the handoff must be reliably parseable. Avoid small or quantized models that may drop required fields or hallucinate completion status. If the handoff will be reviewed by humans in regulated workflows, add a human-review flag to the output schema and route the payload to a review queue before marking the task as handed off. Never allow the agent to retry the original task after producing a handoff unless a human explicitly re-queues it with updated context—otherwise you risk duplicate work and state corruption.
Expected Output Contract
Defines the structured fields, types, and validation rules for the handoff payload generated when an agent cannot complete its task. Use this contract to build downstream parsers, validation logic, and human review interfaces.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
task_id | string (UUID) | Must match the original task UUID. Reject if null or malformed. | |
handoff_reason | enum: [BUDGET_EXCEEDED, CAPABILITY_GAP, POLICY_BLOCK, TIMEOUT, AMBIGUITY] | Must be one of the defined enum values. Reject on unrecognized strings. | |
completion_summary | string (<= 500 chars) | Must be non-empty. Reject if length exceeds 500 characters or is only whitespace. | |
accomplished_steps | array of objects | Each object must have 'step_id' (string) and 'result' (string). Reject if array is empty or any object fails schema. | |
remaining_steps | array of objects | Each object must have 'step_id' (string), 'description' (string), and 'estimated_effort' (string). Reject if array is empty or any object fails schema. | |
resumption_state | object | Must contain 'last_completed_step_id' (string) and 'context_snapshot' (object). Reject if keys are missing or context_snapshot is empty. | |
confidence_score | number (0.0 - 1.0) | If present, must be a float between 0.0 and 1.0 inclusive. Null is allowed. | |
human_decision_required | boolean | Must be a strict boolean. Reject if string 'true' or 'false' is provided. |
Common Failure Modes
Handoff prompts for incomplete agent tasks fail in predictable ways. These are the most common failure modes and the guardrails that prevent them.
Missing Resumption State
What to watch: The handoff describes what was done but omits the exact state needed to resume—file paths, variable values, tool outputs, or cursor position. The human reviewer must reverse-engineer context from logs. Guardrail: Require a structured resumption_state block in the output schema with explicit fields for every mutable artifact. Validate that the block is non-empty before surfacing the handoff.
Overconfident Completion Claims
What to watch: The agent reports a subtask as 'complete' when it only partially finished or produced unvalidated output. The human trusts the summary and misses incomplete work. Guardrail: Require the agent to classify each subtask as completed, partially_completed, or not_started with a required evidence field. Run an eval that flags any completed claim lacking verifiable output artifacts.
Silent Tool Failure Omission
What to watch: A tool call failed, returned an error, or timed out, but the handoff summary doesn't mention it. The human assumes all tool-dependent steps succeeded. Guardrail: Instrument the agent harness to log every tool call outcome. Require the handoff prompt to include a tool_execution_log section with status, error messages, and retry counts. Validate that the log count matches the harness-side count.
Ambiguous Remaining Effort
What to watch: The handoff says 'some work remains' without estimating effort, dependencies, or required skills. The human can't triage or schedule the handoff effectively. Guardrail: Require a structured remaining_effort field with estimated_minutes, required_skills, and blockers. Run an eval that penalizes vague estimates like 'unknown' without a documented reason.
Context Drift Across Handoff Boundaries
What to watch: The handoff prompt references internal agent state, abbreviations, or shorthand that the human reviewer doesn't understand. The summary is technically complete but operationally unusable. Guardrail: Include a glossary or context_key section in the output schema that expands all domain-specific terms, tool names, and internal identifiers. Test handoffs with a reviewer who hasn't seen the agent's internal logs.
Handoff Without Failure Root Cause
What to watch: The agent reports that it couldn't complete the task but doesn't explain why—budget exhaustion, capability gap, permission error, or data missing. The human can't fix the underlying problem and the same failure repeats. Guardrail: Require a failure_classification field with a constrained enum: budget_exhausted, capability_gap, permission_denied, data_unavailable, tool_failure, ambiguous_intent. Validate that the classification is present and consistent with the tool execution log.
Evaluation Rubric
Use this rubric to test the quality of a handoff prompt for incomplete agent tasks before shipping it to production. Each criterion targets a specific failure mode in partial-results handoffs.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
State Completeness | Handoff includes all fields required to resume: task ID, completed steps, pending steps, current blockers, and last successful checkpoint. | Missing task ID, no list of completed steps, or no indication of what remains. A human reviewer cannot resume without reconstructing state. | Parse output for required fields. Confirm [TASK_ID], [COMPLETED_STEPS], [PENDING_STEPS], [BLOCKERS], and [LAST_CHECKPOINT] are present and non-empty. |
Partial Results Integrity | All completed work is accurately summarized with outputs, artifacts, or references. No fabricated progress. | Handoff claims a step is complete but provides no output artifact or reference. A step appears in both completed and pending lists. | Diff [COMPLETED_STEPS] against agent execution log. Verify each completed step has a corresponding output artifact or reference in the handoff payload. |
Remaining Effort Estimate | Estimated remaining effort is present, uses a consistent unit (e.g., steps, minutes, tokens), and is grounded in what remains. | Estimate is missing, uses vague language like 'some work left', or contradicts the number of pending steps listed. | Extract [ESTIMATED_REMAINING_EFFORT] field. Confirm it is a numeric value with a unit. Cross-check against count of [PENDING_STEPS] for consistency. |
Blocker Identification | Every blocker is described with its type (e.g., capability gap, tool failure, permission error, timeout) and impact on progress. | Blocker listed as 'unknown error' or 'something went wrong' without classification. Blocker described but no pending steps reference it. | Classify each [BLOCKER] entry. Confirm it has a type field and at least one [PENDING_STEP] references it as a dependency. |
Resumption Readiness | A human or downstream agent can resume from the handoff without reading raw logs or re-executing completed steps. | Handoff references internal agent state that is not included. Requires knowledge of agent internals to understand next action. | Give the handoff to a colleague unfamiliar with the task. Ask them to describe the next action. Pass if they can do so without asking clarifying questions. |
Context Window Budget | Handoff fits within a defined token budget (e.g., 2000 tokens) while preserving all required state fields. | Handoff exceeds token budget, or critical state is truncated to fit. Verbose narrative replaces structured state. | Tokenize the handoff output. Confirm token count is under [MAX_HANDOFF_TOKENS]. If over, check that no required state field was dropped to meet budget. |
Error Trace Inclusion | When the agent failed due to an error, the handoff includes the error type, message, and the step where it occurred. | Error mentioned but no step context. Stack trace or raw error included without human-readable summary. | Check for [ERROR_TRACE] field when [BLOCKERS] includes an error type. Confirm it contains error_type, error_message, and failed_step. |
Handoff Schema Compliance | Output strictly matches the defined handoff schema. No extra fields, no missing required fields, correct types. | Output is valid JSON but uses different field names. Required fields are null or wrong type. Extra narrative fields added outside schema. | Validate output against [HANDOFF_SCHEMA] using a JSON schema validator. Reject on additional properties, missing required fields, or type mismatches. |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Adapt This Prompt
How to adapt
Use the base prompt with a single agent and a simple state object. Focus on getting the handoff structure right before adding validation. Replace [AGENT_ID] and [TASK_ID] with hardcoded strings. Use a flat JSON output without strict schema enforcement.
Watch for
- Missing state fields that prevent resumption
- Overly verbose summaries that bury the remaining work
- No distinction between completed and pending items

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us