ahmetb/kubectx · error

no namespaces found

Error message

no namespaces found

What it means

Guard error in InteractiveSwitchOp.Run (kubens): formatNamespaceList produced an empty buffer, meaning the current context yields no namespaces to show. The fzf picker would be empty, so the interactive namespace switch aborts with this sentinel error.

Source

Thrown at cmd/kubens/fzf.go:52

// TODO(ahmetb) This method is heavily repetitive vs kubectx/fzf.go.
func (op InteractiveSwitchOp) Run(_, stderr io.Writer) error {
	// parse kubeconfig just to see if it can be loaded
	kc := new(kubeconfig.Kubeconfig).WithLoader(kubeconfig.DefaultLoader)
	defer kc.Close()
	if err := kc.Parse(); err != nil {
		if cmdutil.IsNotFoundErr(err) {
			printer.Warning(stderr, "kubeconfig file not found")
			return nil
		}
		return fmt.Errorf("kubeconfig error: %w", err)
	}

	var in bytes.Buffer
	if err := formatNamespaceList(kc, &in); err != nil {
		return err
	}
	if in.Len() == 0 {
		return errors.New("no namespaces found")
	}

	cmd := exec.Command("fzf", "--ansi", "--no-preview")
	var out bytes.Buffer
	cmd.Stdin = &in
	cmd.Stderr = stderr
	cmd.Stdout = &out

	cmd.Env = append(os.Environ(),
		fmt.Sprintf("%s=1", env.EnvForceColor))
	if err := cmd.Run(); err != nil {
		var exitErr *exec.ExitError
		if !errors.As(err, &exitErr) {
			return err
		}
	}
	choice := strings.TrimSpace(out.String())
	if choice == "" {

View on GitHub (pinned to 12ad6fb22e)

Solutions

  1. Verify the cluster is reachable so namespaces can be listed (`kubectl get ns`)
  2. Switch to a valid context with `kubectx <NAME>` first
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at cmd/kubens/fzf.go:52 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/e6622e10b1955339. Report an issue: GitHub.