ahmetb/kubectx · error

current-context is not set

Error message

current-context is not set

What it means

Guard error in switchNamespace (kubens/switch.go): the resolved current context is an empty string, so there is no context whose namespace preference could be modified. `kubens <NS>` requires an active context in the kubeconfig to persist the namespace setting.

Source

Thrown at cmd/kubens/switch.go:57

	if err := kc.Parse(); err != nil {
		return fmt.Errorf("kubeconfig error: %w", err)
	}

	toNS, err := switchNamespace(kc, s.Target, s.Force)
	if err != nil {
		return err
	}
	err = printer.Success(stderr, "Active namespace is \"%s\"", printer.SuccessColor.Sprint(toNS))
	return err
}

func switchNamespace(kc *kubeconfig.Kubeconfig, ns string, force bool) (string, error) {
	ctx, err := kc.GetCurrentContext()
	if err != nil {
		return "", fmt.Errorf("failed to get current context: %w", err)
	}
	if ctx == "" {
		return "", errors.New("current-context is not set")
	}
	curNS, err := kc.NamespaceOfContext(ctx)
	if err != nil {
		return "", fmt.Errorf("failed to get current namespace: %w", err)
	}

	f := NewNSFile(ctx)
	prev, err := f.Load()
	if err != nil {
		return "", fmt.Errorf("failed to load previous namespace from file: %w", err)
	}

	if ns == "-" {
		if prev == "" {
			return "", fmt.Errorf("No previous namespace found for current context (%s)", ctx)
		}
		ns = prev
	}

View on GitHub (pinned to 12ad6fb22e)

Solutions

  1. Run `kubectx <NAME>` to set an active context, then retry `kubens <NS>`
  2. Verify the kubeconfig is not empty via `kubectl config view`
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at cmd/kubens/switch.go:57 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of ahmetb/kubectx@12ad6fb22e (2026-09-02). Data as JSON: /api/errors/7f2e869ca60bbe80. Report an issue: GitHub.