larksuite/cli · error

remove_attachment: token %q not found in large attachment he

Error message

remove_attachment: token %q not found in large attachment header

What it means

Guard in removeTokenFromIDsHeader: the requested token is not present in the parsed large-attachment header entries, so no entry was removed.

Source

Thrown at shortcuts/mail/draft/large_attachment_parse.go:300

	}
	if headerIdx < 0 {
		return fmt.Errorf("remove_attachment: draft has no large attachment header")
	}
	items, err := decodeLargeAttachmentHeader(snapshot.Headers[headerIdx].Value)
	if err != nil {
		return fmt.Errorf("remove_attachment: malformed large attachment header: %w", err)
	}
	filtered := make([]largeAttHeaderEntry, 0, len(items))
	removed := false
	for _, it := range items {
		if it.token() == token {
			removed = true
			continue
		}
		filtered = append(filtered, it)
	}
	if !removed {
		return fmt.Errorf("remove_attachment: token %q not found in large attachment header", token)
	}
	if len(filtered) == 0 {
		snapshot.Headers = append(snapshot.Headers[:headerIdx], snapshot.Headers[headerIdx+1:]...)
		return nil
	}
	cliItems := make([]struct {
		ID string `json:"id"`
	}, len(filtered))
	for i, it := range filtered {
		cliItems[i].ID = it.token()
	}
	encoded, err := json.Marshal(cliItems)
	if err != nil {
		return fmt.Errorf("remove_attachment: failed to re-encode large attachment header: %w", err)
	}
	snapshot.Headers[headerIdx].Name = LargeAttachmentIDsHeader
	snapshot.Headers[headerIdx].Value = base64.StdEncoding.EncodeToString(encoded)
	return nil

View on GitHub (pinned to 7fd6ef3c07)

Solutions

  1. Refresh the draft (list large attachments) and use a current token
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at shortcuts/mail/draft/large_attachment_parse.go:300 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of larksuite/cli@7fd6ef3c07 (2026-09-04). Data as JSON: /api/errors/2952b6ccf8111ab0. Report an issue: GitHub.