juanfont/headscale · error · ErrNodeAttrUnsupported
%w: %q tracked in %s
Error message
%w: %q tracked in %s
What it means
Error "%w: %q tracked in %s" thrown in juanfont/headscale.
Source
Thrown at hscontrol/policy/v2/types.go:2714
err := p.TagOwners.Contains(t)
if err != nil {
errs = append(errs, err)
}
case *Username, *Prefix, Asterix:
// User / prefix / wildcard targets are accepted at
// parse time and resolved at compile time (where a
// typo'd username surfaces as a propagated Resolve
// error from compileNodeAttrs). Mirrors the grant
// source-side validation shape.
default:
errs = append(errs, fmt.Errorf("%w: %q (%T)", ErrNodeAttrTargetUnsupported, target, target))
}
}
for _, attr := range na.Attrs {
issue, ok := nodeAttrUnsupportedCaps[attr]
if ok {
errs = append(errs, fmt.Errorf("%w: %q tracked in %s", ErrNodeAttrUnsupported, attr, issue))
}
}
if len(na.IPPool) > 0 {
errs = append(errs, ErrNodeAttrIPPoolUnsupported)
}
for _, prefix := range na.IPPool {
err := validateNodeAttrIPPool(prefix)
if err != nil {
errs = append(errs, err)
}
}
}
for _, tagOwners := range p.TagOwners {
for _, tagOwner := range tagOwners {
switch tagOwner := tagOwner.(type) {View on GitHub (pinned to 565fd254d0)
Solutions
- Inspect the wrapped error for the underlying cause and correct the failing condition (); retry the operation after fixing the input, configuration, or environment.
Example fix
Inspect the wrapped error for the underlying cause and correct the failing condition (); retry the operation after fixing the input, configuration, or environment.
When it happens
Trigger: Thrown at hscontrol/policy/v2/types.go:2714 when the library encounters an invalid state.
Common situations: A policy element is already tracked/defined elsewhere. Remove the duplicate entry (e.g. repeated alias or tag definition).
AI-assisted analysis of juanfont/headscale@565fd254d0 (2026-08-15).
Data as JSON: /api/errors/fa78dcddc6a7c5ce.
Report an issue: GitHub.