gastownhall/beads · error
created does not support %s operator
Error message
created does not support %s operator
What it means
The created field in filter mode supports only =, >, >=, <, and <= (mapping to CreatedAfter/CreatedBefore window bounds). Any other operator — typically != or IN — is rejected with this message that names the offending operator via comp.Op.String(). The value itself parsed fine; the operator is the problem.
Source
Thrown at internal/query/evaluator.go:354
}
switch comp.Op {
case OpEquals:
// For equals, set both before and after to bracket the day
dayStart := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, t.Location())
dayEnd := dayStart.Add(24 * time.Hour)
filter.CreatedAfter = &dayStart
filter.CreatedBefore = &dayEnd
case OpGreater:
filter.CreatedAfter = &t
case OpGreaterEq:
filter.CreatedAfter = &t
case OpLess:
filter.CreatedBefore = &t
case OpLessEq:
endOfDay := time.Date(t.Year(), t.Month(), t.Day(), 23, 59, 59, 999999999, t.Location())
filter.CreatedBefore = &endOfDay
default:
return fmt.Errorf("created does not support %s operator", comp.Op.String())
}
return nil
}
func (e *Evaluator) applyUpdatedFilter(comp *ComparisonNode, filter *types.IssueFilter) error {
t, err := e.parseTimeValue(comp)
if err != nil {
return fmt.Errorf("invalid updated time: %w", err)
}
switch comp.Op {
case OpEquals:
dayStart := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, t.Location())
dayEnd := dayStart.Add(24 * time.Hour)
filter.UpdatedAfter = &dayStart
filter.UpdatedBefore = &dayEnd
case OpGreater:
filter.UpdatedAfter = &t
case OpGreaterEq:View on GitHub (pinned to 71377f2769)
Solutions
- Express exclusion as a range: `created < X OR created > Y` around the unwanted point/day
- Use supported operators: `created > t`, `created >= t`, `created < t`, `created <= t`, `created = t`
- Use predicate mode if the desired operator is implemented in buildCreatedPredicate
Example fix
// before bd list 'created != 2026-08-01' // after bd list 'created < 2026-08-01 OR created > 2026-08-02'
Defensive patterns
Strategy: validation
Validate before calling
// Allow only supported created operators
var allowed = map[Op]bool{OpEquals: true, OpGreater: true, OpGreaterEq: true, OpLess: true, OpLessEq: true}
if comp.Field == "created" && !allowed[comp.Op] {
return fmt.Errorf("created does not support %s", comp.Op.String())
} Type guard
func createdOpSupported(op Op) bool {
switch op {
case OpEquals, OpGreater, OpGreaterEq, OpLess, OpLessEq:
return true
}
return false
} Try / catch
if err := eval.applyComparison(comp, filter); err != nil {
if strings.Contains(err.Error(), "created does not support") {
// rewrite as a range using < and > around the excluded point
}
} Prevention
- Restrict created comparisons to =, >, >=, <, <=
- Rewrite != on a date as an OR of two range comparisons
- Validate operators at query-construction time, before evaluation
When it happens
Trigger: Queries like `created != 2026-01-01` or `created not in ...` produce a ComparisonNode whose Op falls into the switch's default branch of applyCreatedFilter.
Common situations: Trying to exclude a specific day (`created != date`) assuming negation is supported; grammar-generated queries using unsupported operators; users expecting SQL-like operator coverage.
Related errors
- updated does not support %s operator
- owner filtering requires predicate mode
- label only supports = operator
- title only supports = operator (use title contains pattern)
- description only supports = operator (use desc contains patt
AI-assisted analysis of gastownhall/beads@71377f2769 (2026-08-30).
Data as JSON: /api/errors/7dc7e1d4a2b919ea.
Report an issue: GitHub.