kubens validates the name against the cluster before writing it into your context, and that namespace is not there - a typo, or it was deleted. List the real ones with kubectl get namespaces, then kubens the exact name. Note kubens may show the interactive list instead of switching when the name is a partial match.

## The error
```text
error: no namespace exists with name "abc".
```

## What to do
1. List the real namespaces:
```bash
kubectl get namespaces
```
   Expected: Shows the namespaces that exist.
2. Switch with the exact name:
```bash
kubens [exact-name]
```
   Expected: Prints `Active namespace is "[exact-name]".`.
3. If the namespace should exist, check you are on the right context: `kubectx -c` and `kubectl config current-context`.
   Expected: Confirms the cluster you are actually talking to.

## When this applies
- the exact no namespace exists with name message
- namespace typos
- namespaces deleted out from under a saved context

## When it does NOT apply
- Error from server (Forbidden) on namespaces (RBAC - different fix)
- current-context is not set

## Works with
kubens (ahmetb/kubectx)

### kubens shows the picker instead of switching on a direct match
Known UX quirk with certain fzf versions. Type the full exact name or pick from the list.

## Why it happens
Unlike kubectl config set-context --namespace, which accepts anything, kubens checks the name against the API first so a typo does not silently point your context at a nonexistent namespace.

## Edge cases
- RBAC that forbids listing namespaces produces this same message even when the namespace exists - check for a Forbidden line above it.
- A namespace stuck in Terminating still lists but can not be used; pick another.

## Resolved from
gh:ahmetb/kubectx#155 - https://github.com/ahmetb/kubectx/issues/155