vxcontrol/pentagi · warning

failed to get active subtask description: %w

Error message

failed to get active subtask description: %w

What it means

Thrown in buildSummary (backend/pkg/tools/flow_manager.go:143) when rendering the active subtask's Description in verbose mode. The description goes through t.getDescriptionText, which calls the LLM summarizer when the description exceeds 2*descriptionLimit (8 KB); this error wraps that summarizer failure. The DB row itself was read fine — only the description compression step failed.

Source

Thrown at backend/pkg/tools/flow_manager.go:143

	fmt.Fprintf(sb, "Subtasks — total: %d, running: %d, waiting: %d, finished: %d, failed: %d, planned: %d\n",
		len(subtasks), stCounts["running"], stCounts["waiting"], stCounts["finished"], stCounts["failed"], stCounts["created"])

	if activeTask != nil {
		fmt.Fprintf(sb, "\nActive task:    ID=%-6d | %-8s | %s\n", activeTask.ID, activeTask.Status, activeTask.Title)
		if verbose && activeTask.Input != "" {
			input, err := t.getInputText(ctx, activeTask.Input)
			if err != nil {
				return "", fmt.Errorf("failed to get active task input: %w", err)
			}
			fmt.Fprintf(sb, "  Input: %s\n", input)
		}
	}
	if activeST != nil {
		fmt.Fprintf(sb, "Active subtask: ID=%-6d | %-8s | %s\n", activeST.ID, activeST.Status, activeST.Title)
		if verbose && activeST.Description != "" {
			description, err := t.getDescriptionText(ctx, activeST.Description)
			if err != nil {
				return "", fmt.Errorf("failed to get active subtask description: %w", err)
			}
			fmt.Fprintf(sb, "  Description: %s\n", description)
		}
	}

	if len(tasks) == 0 {
		fmt.Fprintf(sb, "\nNo tasks yet. Flow is waiting for first input.\n")
	}

	summary := sb.String()
	if t.summarizer != nil && len(summary) > summaryLimit {
		summary, err = t.summarizer(ctx, truncateText(summary, summarizationLimit))
		if err != nil {
			return "", fmt.Errorf("failed to summarize summary: %w", err)
		}
	}

	return summary, nil

View on GitHub (pinned to ea665308ba)

Solutions

  1. Check the underlying summarizer error and provider health (API key, quota, endpoint) in the observability logs.
  2. Retry the call, or use verbose=false so only title/status are printed without description summarization.
  3. Trim subtask descriptions (patch_flow_subtasks) so they stay under 8 KB and bypass the summarizer.
  4. Set the summarizer to nil / fix its config to fall back to truncateText truncation instead of LLM summarization.

Example fix

// before
description, err := t.getDescriptionText(ctx, activeST.Description)
if err != nil {
	return "", fmt.Errorf("failed to get active subtask description: %w", err)
}
// after: fall back to raw truncation
rendered, err := t.getDescriptionText(ctx, activeST.Description)
if err != nil {
	rendered = truncateText(activeST.Description, descriptionLimit)
}
description = rendered
Defensive patterns

Strategy: fallback

Validate before calling

// avoid the summarizer path when the description is small enough
if len(subtaskDescription) <= 2*descriptionLimit {
	verbose = true // safe: only local truncation happens
} else if summarizerUnavailable(ctx) {
	verbose = false
}

Try / catch

// Go: fall back to non-verbose summary on this error
out, err := tool.Handle(ctx, "get_flow_status", verboseSummaryArgs)
if err != nil && strings.Contains(err.Error(), "failed to get active subtask description") {
	out, err = tool.Handle(ctx, "get_flow_status", summaryArgs)
}

Prevention

When it happens

Trigger: get_flow_status with detail='summary' and verbose=true while a subtask is running/waiting, its Description exceeds 8 KB, and the t.summarizer callback errors (provider outage, auth failure, rate limit, context cancellation).

Common situations: Expired or missing LLM API key for the configured summarizer provider; provider 429 rate limiting during parallel agent activity; long attacker-style subtask descriptions generated by the Developer agent exceeding the summarization threshold; local Ollama server stopped.

Related errors


AI-assisted analysis of vxcontrol/pentagi@ea665308ba (2026-09-01). Data as JSON: /api/errors/392c048a26b4e8a1. Report an issue: GitHub.