vxcontrol/pentagi · error

center_node_uuid must be a valid UUID copied verbatim from t

Error message

center_node_uuid must be a valid UUID copied verbatim from the 'UUID:' field of a prior graphiti_search result, got %q

What it means

After presence-checking center_node_uuid, entity_relationships validates it with uuid.Parse. Any non-UUID string (invented IDs, names, truncated UUIDs) produces this error quoting the received value, instructing the caller that the UUID must be copied verbatim from a prior graphiti_search result's 'UUID:' field.

Source

Thrown at backend/pkg/tools/graphiti_search.go:393

	if err != nil {
		return "", fmt.Errorf("temporal window search failed: %w", err)
	}

	return FormatGraphitiTemporalResults(resp, args.Query), nil
}

// handleEntityRelationshipsSearch finds relationships from a center node
func (t *graphitiSearchTool) handleEntityRelationshipsSearch(
	ctx context.Context,
	groupID string,
	args GraphitiSearchAction,
	observationObject *graphiti.Observation,
) (string, error) {
	if args.CenterNodeUUID == "" {
		return "", fmt.Errorf("center_node_uuid is required for entity_relationships search")
	}
	if _, err := uuid.Parse(args.CenterNodeUUID); err != nil {
		return "", fmt.Errorf(
			"center_node_uuid must be a valid UUID copied verbatim from the 'UUID:' field of a prior "+
				"graphiti_search result, got %q", args.CenterNodeUUID,
		)
	}

	maxResults := args.MaxResults.Int()
	if maxResults <= 0 {
		maxResults = DefaultRelationshipMaxResults
	}

	maxDepth := args.MaxDepth.Int()
	if maxDepth <= 0 {
		maxDepth = DefaultMaxDepth
	}
	if maxDepth > 3 {
		maxDepth = 3
	}

View on GitHub (pinned to ea665308ba)

Solutions

  1. Copy the exact UUID string from the 'UUID:' field of a prior graphiti_search result
  2. Re-run a nodes search to obtain a valid UUID if the original is lost
  3. Trim whitespace/quotes from the value before passing it

Example fix

// before
{"center_node_uuid": "vpn-server-node"}
// after
{"center_node_uuid": "3f2a9c1e-8b47-4d20-9c11-2f6a5b7e1234"}
Defensive patterns

Strategy: validation

Validate before calling

if _, err := uuid.Parse(args.CenterNodeUUID); err != nil {
    return fmt.Errorf("center_node_uuid is not a valid UUID: %q", args.CenterNodeUUID)
}

Type guard

func isValidUUID(s string) bool {
    _, err := uuid.Parse(s)
    return err == nil
}

Prevention

When it happens

Trigger: Passing a node name, hostname, partial UUID, or an ID from a different system as center_node_uuid for entity_relationships search.

Common situations: LLM agents hallucinating plausible-looking UUIDs; copying an 'ID' column that is not the UUID field; whitespace or quotes around the value breaking the parse.

Related errors


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