micro/go-micro · error
agent %s has no checkpoint configured
Error message
agent %s has no checkpoint configured
What it means
agentImpl.resume (agent/checkpoint.go:80) requires a Checkpoint store to load the run. If opts.Checkpoint is nil — the agent was constructed without durable checkpointing — resume cannot locate any run and returns this error naming the agent.
Source
Thrown at agent/checkpoint.go:80
})
}
return nil
}
// Resume returns the response for a checkpointed agent run. Completed runs are
// returned from the checkpoint without calling the model or replaying tool
// calls; failed or in-progress runs continue from the saved input message.
func Resume(ctx context.Context, ag Agent, runID string) (*Response, error) {
a, ok := ag.(*agentImpl)
if !ok {
return nil, fmt.Errorf("agent resume: unsupported agent implementation %T", ag)
}
return a.resume(ctx, runID)
}
func (a *agentImpl) resume(ctx context.Context, runID string) (*Response, error) {
if a.opts.Checkpoint == nil {
return nil, fmt.Errorf("agent %s has no checkpoint configured", a.opts.Name)
}
run, ok, err := a.opts.Checkpoint.Load(ctx, runID)
if err != nil {
return nil, err
}
if !ok {
return nil, fmt.Errorf("agent run %s not found", runID)
}
if run.Status == "paused" {
if run.State.Stage == agentInputStep {
return nil, fmt.Errorf("agent run %s is input-required; resume with ResumeInput", runID)
}
run.Status = "running"
run.State.Stage = agentAskStep
}
if run.Status == "done" {
var resp Response
if err := json.Unmarshal(run.State.Data, &resp); err != nil {View on GitHub (pinned to 24529f1404)
Solutions
- Construct the agent with a Checkpoint option before attempting resume
- Verify the config path that builds the agent passes the checkpoint store in all environments
- For non-checkpointed agents, re-issue the original request instead of resuming
- Add a pre-call check that checkpointing is enabled for the agent
Example fix
// before ag := agent.New(model, mem) // no checkpoint resp, err := agent.Resume(ctx, ag, runID) // no checkpoint configured // after ag := agent.New(model, mem, agent.WithCheckpoint(cpStore)) resp, err := agent.Resume(ctx, ag, runID)
Defensive patterns
Strategy: validation
Validate before calling
// guard before resuming
if !agentHasCheckpoint(ag) { // e.g. track checkpoint presence in your config
return errors.New("cannot resume: agent built without checkpoint option")
} Try / catch
resp, err := agent.Resume(ctx, ag, runID)
if err != nil && strings.Contains(err.Error(), "no checkpoint configured") {
return fmt.Errorf("enable WithCheckpoint to use resume: %w", err)
} Prevention
- Always pass a Checkpoint option in environments that use resume/pending
- Centralize agent construction so checkpoint config cannot be dropped
- Add a startup assertion that checkpointing is enabled where resume flows exist
When it happens
Trigger: Calling agent.Resume(ctx, ag, runID) (or ResumePending/Pending) on an agent built without the Checkpoint option, i.e. one whose runs were never persisted.
Common situations: Constructor options omit Checkpoint in one environment (e.g. local dev) while ops code assumes resume works; configuration refactor dropped the checkpoint option; calling resume on a transient agent created ad-hoc.
Related errors
- agent: ResumeStreamAsk unsupported by implementation
- agent: ResumeStreamAsk requires a checkpoint
- agent: checkpointed run not found
- agent: checkpointed run is terminal with status
- agent: checkpointed run is input-required; resume with Resum
AI-assisted analysis of micro/go-micro@24529f1404 (2026-09-01).
Data as JSON: /api/errors/1a2aee6ff08c1a09.
Report an issue: GitHub.