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 nilView on GitHub (pinned to 7fd6ef3c07)
Solutions
- 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.