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

  1. Construct the agent with a Checkpoint option before attempting resume
  2. Verify the config path that builds the agent passes the checkpoint store in all environments
  3. For non-checkpointed agents, re-issue the original request instead of resuming
  4. 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

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


AI-assisted analysis of micro/go-micro@24529f1404 (2026-09-01). Data as JSON: /api/errors/1a2aee6ff08c1a09. Report an issue: GitHub.