juanfont/headscale · error

expiring node: %w

Error message

expiring node: %w

What it means

Error "expiring node: %w" thrown in juanfont/headscale.

Source

Thrown at cmd/headscale/cli/nodes.go:220

		now := time.Now()

		expiryTime := now

		if expiry != "" {
			var err error

			expiryTime, err = time.Parse(time.RFC3339, expiry)
			if err != nil {
				return fmt.Errorf("parsing expiry time: %w", err)
			}
		}

		resp, err := client.ExpireNodeWithResponse(ctx, nodeID, clientv1.ExpireNodeJSONRequestBody{
			Expiry: &expiryTime,
		})
		if err != nil {
			return fmt.Errorf("expiring node: %w", err)
		}

		if resp.StatusCode() != http.StatusOK {
			return apiError(resp.StatusCode(), resp.ApplicationproblemJSONDefault)
		}

		node := resp.JSON200.Node

		if now.Equal(expiryTime) || now.After(expiryTime) {
			return printOutput(cmd, node, "Node expired")
		}

		return printOutput(cmd, node, "Node expiration updated")
	}),
}

var renameNodeCmd = &cobra.Command{
	Use:   "rename NEW_NAME",

View on GitHub (pinned to 565fd254d0)

Solutions

  1. Inspect the wrapped error for the underlying cause and correct the failing condition (expiring node); 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 (expiring node); retry the operation after fixing the input, configuration, or environment.

When it happens

Trigger: Thrown at cmd/headscale/cli/nodes.go:220 when the library encounters an invalid state.

Common situations: The gRPC call to expire the node failed. Verify the node ID exists and the server is reachable.


AI-assisted analysis of juanfont/headscale@565fd254d0 (2026-08-15). Data as JSON: /api/errors/69a422d9dd981f4a. Report an issue: GitHub.