# Claude Code Feature Availability

Part of Claude Code runs in the **local CLI**; another part is a **hosted service tied to an
Anthropic account**. With a third-party API key (QCode included) the former works normally and the
latter does not. This page draws the line so you do not spend an afternoon debugging.

> **About the evidence column**: rows are marked **measured** (we actually ran it) or **inferred**
> (judged from how the product works, not tested). Do not treat inference as fact — if a row
> matters to you, verify it yourself.

## The table

| Feature | With a QCode key | Evidence |
|---------|:---:|----------|
| CLI core: chat, file read/write, Bash, MCP, Skills, Plugins, subagents | ✅ | **Measured**: `claude -p` returns normally; file creation succeeds |
| Permission mode `bypassPermissions` | ✅ | **Measured**: the same task wrote to disk |
| Permission modes `acceptEdits` / `manual` / `plan` / `dontAsk` | ✅ | **Inferred**: local decision logic, no hosted classifier involved |
| Permission mode **`auto`** | ❌ | **Measured**: under `--permission-mode auto`, Write and Bash were **both denied**; switching the same task on the same endpoint to `bypassPermissions` succeeded immediately (control) |
| `claude ultrareview` / `/ultrareview` | ❌ | **Measured**: returns `Ultrareview could not launch: Ultrareview is currently unavailable.` |
| `claude setup-token` | ❌ | **Measured**: the CLI's own help says `requires Claude subscription` |
| Cloud sessions / Claude Code on the web / mobile | ❌ | **Official**: Slack and cloud sessions always go straight to the Anthropic API, never through a gateway — see [llm-gateway-connect](https://code.claude.com/docs/en/llm-gateway-connect) |
| Remote Control | ❌ | **Official**: unavailable with a gateway configuration active, and disabled whenever `ANTHROPIC_BASE_URL` points at a non-Anthropic host — same doc |
| Voice dictation | ❌ | **Official**: relies on claude.ai identity and its transcription endpoint; unavailable while `ANTHROPIC_API_KEY` / `ANTHROPIC_AUTH_TOKEN` is active — same doc |
| Artifacts (publishing session output to claude.ai) | ❌ | **Inferred**: a claude.ai account feature |
| Self-hosted environments | ❌ | **Inferred**: a Team / Enterprise plan feature |
| Claude in Chrome extension | ❌ | **Inferred**: tied to an Anthropic plan |
| Claude Code Desktop (local sessions) | ⚠️ untested | **Inferred**: the desktop app drives the same local CLI and should inherit the same config |

## Why auto mode does not work

`auto` mode relies on a **hosted classifier** to decide which actions may run unattended. With a
third-party key that classifier is unavailable, and the failure mode is not "allow everything" but
**deny everything** — Write and Bash are both blocked, down to a bare `echo`.

**This is not specific to QCode**; any third-party endpoint behaves the same. We ran the control:
same endpoint, same task, only `--permission-mode` changed from `auto` to `bypassPermissions`, and
the file was created immediately.

**What to use instead**: `acceptEdits` day to day (edits apply, commands still prompt), and
`bypassPermissions` in an isolated environment.

```bash
# day to day
claude --permission-mode acceptEdits

# isolated environment / CI (use with care)
claude --permission-mode bypassPermissions
```

## Pointing Claude Code at QCode

```bash
export ANTHROPIC_BASE_URL="https://api.qcode.cc/api"
export ANTHROPIC_AUTH_TOKEN="cr_your_qcode_key"
claude -p "reply with exactly: OK"
```

`OK` means you are connected. See [Environment Variables](/docs/getting-started/environment).

## This table will go stale

Claude Code ships weekly and the boundary moves. **If you observe behaviour that contradicts this
page, trust your own measurement**, and please tell us at **hi@qcode.cc** so we can update it.

## Related

- [Environment Variables](/docs/getting-started/environment)
- [Endpoints & API Paths](/docs/getting-started/endpoints-and-api-paths)
- [Claude Code Tutorial](/docs/getting-started/claude-code-tutorial)
- [Troubleshooting](/docs/reference/troubleshooting)