Use Fireworks AI models in Claude Code, OpenCode, Codex, Pi, Cursor, VS Code, and DeepSeek Harness.
One CLI points your existing AI coding tools at Fireworks. on rewrites the tool's own config,
off restores your original file byte-for-byte — no proxy to run, no wrapper to launch.
Contents: Quick start · Supported harnesses · Default models · Claude Code · Codex · OpenCode · Pi · Cursor · VS Code Chat · DeepSeek Harness · FireRouter · Models · Azure / Foundry · CLI reference · Keys and storage · Troubleshooting · Upgrade and uninstall
1. Install
curl -fsSL https://raw.githubusercontent.com/fw-ai/fireconnect/main/install.sh | bash2. Sign in
fireconnect login # browser sign-in, or paste a fw_… / fpk_… key3. Connect a harness
fireconnect claude # first run opens the model mapping wizard✓ Claude Code → Fireworks
Model mapping
Fable → kimi-fast-latest
Main → Claude default
Opus → firerouter
Sonnet → glm-fast-latest
Haiku → deepseek-flash-latest
Subagents → Claude default
✓ Web search → fireworks-websearch (installed)
Restart Claude Code to use the new setup.
4. Restart the tool, then verify
fireconnect claude statusClaude Code
Connection: on
Provider: Fireworks
Auth: custom header in settings.json
Model mapping:
main -> firerouter
claude status lists only overrides — unpinned native slots and slots still on the
default Fireworks mapping are omitted. After Mix with the recommended fast profile,
the mapping section may be empty until you pin a slot.
Swap claude for any harness: opencode, codex, pi, cursor, vscode, deepseek.
Run fireconnect help or fireconnect <harness> help for every option.
- Requires bash and Node.js 18+. Missing or too old Node: installed via Homebrew on macOS, otherwise the installer prints nvm / nodejs.org / NodeSource instructions.
- Clones the CLI to
~/.fireconnect/cli, installs the launcher into~/.local/bin, and adds it to your shellPATH. - Runs the same finalize as
fireconnect upgrade(reprobe secret storage; rebake enabled harness keys and the Claude websearch MCP Bearer token). - Does not sign you in or touch harness settings — that's steps 2 and 3.
Windows: run from Git Bash with the same command above. Piping through PowerShell corrupts line endings
(set: pipefail\r: invalid option name).
From an SSH checkout:
mkdir -p ~/.fireconnect && git clone git@github.com:fw-ai/fireconnect.git ~/.fireconnect && bash ~/.fireconnect/install.sh| Harness | Command | Config it writes | Key storage | Before on / off |
|---|---|---|---|---|
| Claude Code | fireconnect claude |
~/.claude/settings.json |
Baked header literal (0600) |
Restart after |
| Codex | fireconnect codex |
~/.codex/config.toml |
Baked bearer literal (0600) |
Restart after |
| OpenCode | fireconnect opencode |
~/.config/opencode/opencode.json |
Baked literal (0600) |
Restart after |
| Pi | fireconnect pi |
~/.pi/agent/{settings,models,auth}.json |
Baked literal (0600) |
Restart after |
| Cursor | fireconnect cursor |
state.vscdb (SQLite) |
IDE safeStorage |
Quit Cursor first |
| VS Code Chat | fireconnect vscode |
chatLanguageModels.json + state.vscdb |
IDE safeStorage |
Quit VS Code first |
| DeepSeek Harness | fireconnect deepseek |
~/.dsh/settings.yaml + .credentials.yaml |
Baked credential (0600) |
Restart dsh after |
Every harness supports on, off, status, and help. off restores your pre-connect
configuration — file-based harnesses byte-for-byte from a snapshot under ~/.fireconnect/,
and the IDEs by removing only what FireConnect registered.
| Slot / harness | Default |
|---|---|
Claude main |
claude-default (native — Claude Code's own default model) |
Claude opus |
firerouter on first connect when FireRouter auth is available; otherwise kimi-fast-latest |
Claude sonnet |
glm-fast-latest |
Claude fable |
kimi-fast-latest when FireRouter takes Opus; otherwise deepseek-pro-latest |
Claude haiku |
deepseek-flash-latest |
Claude subagent |
claude-default (native — Claude Code's own default subagent model) |
| OpenCode, Codex, Pi, Cursor, VS Code, DeepSeek Harness | kimi-fast-latest |
Fire Pass (fpk_...) |
kimi-fast-latest everywhere |
Fire Pass keys are detected automatically — no flags needed. Saved Claude mappings are
key-scoped (Fireworks vs Fire Pass) and silently restored after claude off → claude.
Override anytime with flags or the wizard.
fireconnect claude # wizard on first setup; flags work anytime
fireconnect claude --interactive # reopen the model mapping wizard
fireconnect claude status # mapping, auth, and per-slot rates
fireconnect claude usage # pick session → live meter (Tab agents, Esc sessions, q quit)
fireconnect claude usage --days 7 # widen the session list's lookback (default 3)
fireconnect claude usage --session <id> # start on one session; Esc still opens the list
fireconnect claude usage --plain # one-shot snapshot, no interactive picker
fireconnect claude demo # race two models on a prompt (requires routing on)
fireconnect claude offSettings apply per session: to pick up a new mapping, exit and resume with
claude --resume <id>, or start a new session.
Claude Code has six model slots. FireConnect owns the mapping and prints it after every successful activation. Configure it three ways:
# 1. Interactive wizard — first connect, or anytime
fireconnect claude --interactive
# 2. Slot flags — scriptable, combine freely
fireconnect claude --model kimi-fast-latest
fireconnect claude --opus glm-fast-latest --sonnet glm-fast-latest
fireconnect claude --haiku deepseek-flash-latest --subagent deepseek-flash-latest
# 3. Saved prefs / defaults, no prompts — CI and scripts
fireconnect claude --non-interactive--interactive opens the wizard at any time, not just on first connect. It is Fable-first,
toggles between the recommended fast profile and a non-fast profile, and needs a terminal —
use the flags above in CI.
| Flag | Writes |
|---|---|
--model |
top-level model (Claude's main / the /model "Default" row) |
--opus, --sonnet, --haiku, --fable |
matching ANTHROPIC_DEFAULT_*_MODEL |
--subagent |
CLAUDE_CODE_SUBAGENT_MODEL |
Slots are independent — --opus firerouter changes only Opus and leaves main alone.
Use native as a slot value to leave it unpinned so Claude Code picks Anthropic's
default for that role (still routed through Fireworks). on is optional.
fireconnect claude --opus native --sonnet native # native Opus/Sonnet
fireconnect claude --model claude-sonnet-4-5 # pin a specific Anthropic modelOn first connect, the wizard asks Fireworks-only vs Mix (recommended). Re-running fireconnect claude without model flags preserves the current main when
FireConnect is already active (including /model changes made inside Claude Code), and
otherwise restores your saved key-scoped mapping.
Claude authenticates with a static X-Fireworks-Api-Key custom header
(ANTHROPIC_CUSTOM_HEADERS), not apiKeyHelper. main and subagent stay native
(Claude-default — Claude Code's own defaults), so neither is pinned; the alias slots are
pinned in env. With FireRouter auth present, opus is firerouter and fable is
kimi-fast-latest:
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.fireworks.ai/inference",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "firerouter[1m]",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "glm-fast-latest[1m]",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-flash-latest[1m]",
"ANTHROPIC_DEFAULT_FABLE_MODEL": "kimi-fast-latest[1m]",
"ANTHROPIC_CUSTOM_HEADERS": "X-Fireworks-Api-Key: fw_..."
}
}Without FireRouter auth, opus falls back to kimi-fast-latest[1m] and fable to
deepseek-pro-latest[1m].
When FireRouter is auto-selected on first connect, model is firerouter[1m] instead.
Why the custom header? The gateway authenticates via X-Fireworks-Api-Key, which wins over
any x-api-key / Authorization a stray ANTHROPIC_API_KEY / ANTHROPIC_AUTH_TOKEN would
send — so a leftover Anthropic key can't silently break routing. The trade-off is a plaintext
Fireworks key in settings.json (mode 0600); the OS keychain stays the source of truth for
key export and other harnesses. FireConnect keeps a byte-for-byte backup for off, and
pre-approves a stray ANTHROPIC_API_KEY in ~/.claude.json so Claude Code doesn't prompt on
first launch.
on also:
- Adds
WebSearch/WebFetchtopermissions.deny— Anthropic server-side tools the gateway can't run. Your own rules are preserved; the deny entries are removed onoff. If your account is entitled to Fireworks web search, afireworks-websearchMCP server is installed as the working replacement, withAuthorization: Bearer <key>baked into~/.claude.json(same shape asclaude mcp add --header). - Sends privacy-safe attribution headers where the harness supports them:
X-Title: <harness>andHTTP-Referer: fireconnect/v<version>.User-Agentis never overridden, and these carry no user, account, path, repo, prompt, session, or credential data. Cursor and DeepSeek Harness expose no custom-header surface, so they skip attribution.
Model IDs and [1m]. Short slugs are accepted everywhere and canonical
accounts/fireworks/... IDs are shortened before write. The [1m] suffix is
applied per model ID when the resolved serverless context window is at least
1M tokens (live catalog cache when available, otherwise static specs), plus any
firerouter* gateway pattern. Router aliases such as deepseek-flash-latest
resolve to their base model before the limit check.
CLAUDE_CODE_SUBAGENT_MODEL never gets [1m] — Claude Code forwards that value verbatim.
The [1m] tag is Claude Code only; other harnesses (Cursor, etc.) should use the bare
model ID without the suffix.
Claude Code has no way to mark a model as non-vision. Pasting or attaching an image while a
text-only slot is active can break the session — recover with /rewind. Activation prints a
one-line warning:
Text-only: deepseek-flash-latest, glm-fast-latest · Avoid images; recover with /rewind.
The wizard and fireconnect claude status label every model vision or text-only.
Claude Code's /model picker and session cost estimates use Anthropic list prices, while
Fireworks bills at serverless rates — the in-app estimate can look far higher than your real
bill. Use fireconnect claude status and fireconnect model list for Fireworks rates, check
serverless pricing, and see the
billing dashboard for actual spend.
Routes OpenAI Codex CLI through Fireworks via the Responses API.
fireconnect codex # writes ~/.codex/config.toml
fireconnect codex status
fireconnect codex --model glm-latest # switch model
fireconnect codex off- Sets root
model_provider/modelfor Codex 0.134+ (short slug) and adds a[model_providers.fireworks-ai]block withwire_api = "responses"and a bakedexperimental_bearer_tokenliteral (mode0600). No shell hook needed. - Writes the preferred serverless catalog to
~/.codex/fireworks-model-catalog.jsonand points Codex at it viamodel_catalog_json(latest aliases preferred; embeddings, no-tool, and deprecated models filtered out).offremoves the file and reference. - Preserves unrelated settings (for example
[[mcp_servers]]) via surgical TOML edits, and onoffreconciles the shell hook when nothing else needsFIREWORKS_API_KEY.
MiniMax is not supported on Codex. Codex may insert assistant messages between
tool_callsandtool_results, which MiniMax chat templates reject. FireConnect failscodex --model minimax-latestwith an explanation. Use MiniMax on a Chat Completions harness such as Claude Code or OpenCode.
config.toml updates immediately; exit Codex and codex resume <id> (or start a new session)
to pick up the change. Use --config-path <path> for a non-default config.
Routes OpenCode through Fireworks.
fireconnect opencode
fireconnect opencode status
fireconnect opencode --model glm-latest
fireconnect opencode off- Merges a
provider.fireworks-aiblock into~/.config/opencode/opencode.json, sets the defaultmodeltofireworks-ai/<slug>, and keys provider models by short slug.options.apiKeyis a baked plaintext literal (mode0600). - Registers the preferred serverless catalog in the provider's
modelsfor OpenCode's/modelpicker, falling back to the active model when the catalog can't be fetched (offline).
Use --config-path <path> for a non-default config.
Routes Pi through Fireworks.
fireconnect pi
fireconnect pi status
fireconnect pi --model glm-latest
fireconnect pi off- Sets
defaultProvider/defaultModelin~/.pi/agent/settings.jsonand stores a baked plaintext literal infireworks.key(auth.json, mode0600).onapplieskimi-fast-latestunless you pass--model. - Registers the preferred serverless catalog in
~/.pi/agent/models.jsonfor Pi's/modelpicker. Managed IDs are canonicalaccounts/fireworks/...ids, so each entry overrides Pi's built-in catalog row in place with context, pricing, reasoning, and vision metadata from the shared Fireworks specs. Falls back to the last cached catalog offline. - Snapshots and restores all three files (
settings.json,auth.json,models.json). The registered model ids are tracked in~/.fireconnect/config.json(harnesses.pi.profiles.managedModelIds) so repeatonrebuilds exactly andoffstrips only what FireConnect added.
Use --settings-path <path> for a non-default settings file.
Cursor stores AI settings in SQLite (state.vscdb), so FireConnect writes there directly:
| Setting | Key |
|---|---|
| API key | cursorAuth/openAIKey |
| Base URL | openAIBaseUrl → https://api.fireworks.ai/inference/v1 |
| Custom models | aiSettings.userAddedModels + aiSettings.modelOverrideEnabled |
| Hidden built-ins | aiSettings.modelOverrideDisabled |
| Per-mode model | aiSettings.modelConfig[mode] (e.g. composer, cmd-k) |
fireconnect cursor --api-key fw_... # quit Cursor first
fireconnect cursor status # read-only; safe while Cursor is open
fireconnect cursor --model glm-fast-latest
fireconnect cursor offcursor --model <id> registers the model and sets every mode that already exists in
modelConfig — it won't create modes you don't have. Direct Fireworks IDs are stored as short
slugs; legacy canonical entries migrate on the next on.
Quit Cursor (
Cmd-Q/ File > Quit) beforeonoroff. Otherwise Cursor's in-memory state overwrites the write on its next flush. In an interactive terminal FireConnect waits for you to quit (press Enter to confirm, or auto-detect); after ~90s it offers continue-anyway.--forcewrites anyway.
While FireConnect is on, only Fireworks models work — Cursor's built-in models (Auto,
subscription models, Opus modes) are hidden from the picker and won't respond.
fireconnect cursor off restores them, and only removes models FireConnect registered.
FireConnect adds a Fireworks provider to chatLanguageModels.json (vendor customendpoint,
apiType: chat-completions) pointing at https://api.fireworks.ai/inference — VS Code appends
/v1/chat/completions. Azure/Foundry mode also uses apiType: chat-completions.
fireconnect vscode --api-key fw_... # quit VS Code first
fireconnect vscode status # read-only; safe while VS Code is open
fireconnect vscode --model deepseek-flash-latest
fireconnect vscode offThe API key is not in the JSON: VS Code resolves ${input:chat.lm.secret.<id>} through
Electron safeStorage in its application-scoped state.vscdb. on writes both the provider
entry and the encrypted key under a chat.lm.secret.fw-* id. Same quit / --force rules as
Cursor.
safeStorage by platform:
- macOS — master key in the login Keychain (
<App> Safe Storage); open VS Code once first. Insiders is auto-detected (Code - Insiders Safe Storage). - Windows — AES-256-GCM with a DPAPI-protected key in VS Code's
Local State. - Linux — needs
libsecret(secret-tool) for real encryption. Without it Chromium falls back to a hardcoded password (obfuscated, not encrypted); FireConnect still writes and warns.
off restores chatLanguageModels.json byte-for-byte and deletes the chat.lm.secret.fw-*
row; providers you configured yourself are preserved.
Per-model toolCalling / vision / token limits live in
packages/setup-cli/lib/fireworks/model-specs.mjs. Unmapped models default to
toolCalling: true, vision: false, with limits omitted until the model is added.
Routes DeepSeek Harness (dsh) through Fireworks
via a custom OpenAI-compatible provider in $DSH_HOME (default ~/.dsh).
fireconnect deepseek
fireconnect deepseek status
fireconnect deepseek --model glm-latest
fireconnect deepseek off- Writes
llm-pi-ai.providers.fireworksandagent-default-modelinto~/.dsh/settings.yamlpointing athttps://api.fireworks.ai/inference/v1. - Stores the Fireworks key as
FIREWORKS_API_KEYin~/.dsh/.credentials.yaml(mode0600). - Sets the default model for new sessions to the selected Fireworks model.
Use --config-path <path> for a non-default settings.yaml (credentials stay beside that file).
FireRouter is a judge-model router: simpler requests go to cheaper models, harder ones pass
through. It's a normal firerouter model on the Fireworks gateway — not a separate mode.
Select it like any other model.
fireconnect <harness> --model firerouter # any harness
fireconnect claude --opus firerouter # or a single Claude slot| Keys | Standard Fireworks (fw_...) only — not Fire Pass |
| Catalog | Always in fireconnect model list for a standard key |
| Pickers | Auto-included with workspace BYOK (enable-workspace-byok), or a forwardable sk-ant-... ANTHROPIC_API_KEY on harnesses that can attach one |
| Auto default | Claude Code main only — first connect, FireRouter auth present, no explicit model flags |
| No Anthropic key | Still routes among Fireworks models |
BYOK for Anthropic frontier models. With workspace BYOK, your Anthropic key is used
server-side — no extra flags. Otherwise pass --anthropic-api-key sk-ant-... (or export
ANTHROPIC_API_KEY) on a harness that can forward it. OpenAI BYOK is not supported.
| Harness | Local Anthropic BYOK | --routing-preference |
Notes |
|---|---|---|---|
| Claude Code | Header value | Yes | Fireworks header still wins for gateway auth; only harness that can auto-default main |
| OpenCode | Header value | Yes | --model firerouter registers only that model |
| Pi | Header value | Yes | Same Fireworks provider as other Pi models |
| VS Code | Header value | Yes | Same provider (apiType: chat-completions) |
| Codex | ANTHROPIC_API_KEY env reference |
No | Export the key, or use workspace BYOK |
| Cursor | Workspace BYOK only | No | Override UI can't attach a local Anthropic key |
| DeepSeek Harness | Workspace BYOK only | No | Same BYOK shape as Cursor |
Tune the cost/quality tradeoff where supported:
fireconnect claude --opus firerouter --routing-preference balanced
# max-intelligence (1) · more-intelligence (2) · balanced (3) · more-savings (4) · max-savings (5)The old
--routerflag is retired — use--model firerouteror a Claude slot flag.
More detail: FireRouter overview.
fireconnect model list
fireconnect model list --search glm
fireconnect model list --jsonFetches coding-tagged serverless models (GET /v1/serverless/models?use_cases=coding), adds the
per-model fast routers the API reports, and merges version-tracking aliases whose targets are
present: glm-latest, glm-fast-latest, kimi-latest, kimi-fast-latest, minimax-latest,
qwen-plus-latest. Every row is tagged serverless.
Key resolution order: --api-key → FIREWORKS_API_KEY → stored credential. Standard keys
include firerouter; Fire Pass keys show only Fire Pass-supported routers (glm-latest,
glm-fast-latest, glm-5p2-fast, kimi-fast-latest).
| Command | Shows |
|---|---|
fireconnect claude status |
Provider, auth, alias mapping, Fireworks rates per slot |
fireconnect model list |
Serverless catalog with IN / OUT pricing where known |
Short IDs and canonical accounts/fireworks/... IDs both work, and -latest router aliases
(glm-latest, kimi-fast-latest, …) are recommended over pinned versions so you track new
releases automatically. Most non-Claude harnesses store short slugs; Pi stores canonical
accounts/fireworks/... ids — legacy configs migrate to each harness's format on the next
on. Not sure what to pick? Start from the defaults, browse
fireconnect model list, or run fireconnect claude --interactive. Foundry (Azure) uses
deployment names instead — see Azure.
Fireworks models are also first-party models inside Microsoft Foundry, billed through Azure and counting toward your MACC. Foundry exposes an OpenAI-compatible endpoint, so OpenCode, Codex, Pi, Cursor, and VS Code can route there instead of the Fireworks gateway.
Configure once, then <harness> on uses it — no per-command flags:
fireconnect configure --provider azure \
--base-url https://<resource>.services.ai.azure.com \
--api-key <azure-api-key>
fireconnect opencode # routes through the configured Foundry endpoint
fireconnect codexconfigure stores a top-level provider and azure endpoint in ~/.fireconnect/config.json.
Switch back with fireconnect configure --provider fireworks .... You can also opt in per
command (or override the configured endpoint) with --azure:
fireconnect opencode --azure --base-url https://<resource>.services.ai.azure.com \
--api-key <azure-api-key> --model FW-GLM-5.2- Endpoint. FireConnect normalizes whatever you paste — bare resource root, portal project
endpoint (
.../api/projects/<name>), or the/modelsroute — tohttps://<resource>.services.ai.azure.com/openai/v1. Find it in the Foundry portal under Project settings. - Auth. Use your Azure API key (not
fw_/fpk_).--api-keywrites it literally; exportingAZURE_API_KEYwrites an environment reference instead. - Model. The id is your Foundry deployment name — the catalog model name without the
fireworks-ai/prefix (e.g.FW-GLM-5.2,FW-MiniMax-M2.5). Defaults toFW-GLM-5.2. - Isolation. Each harness writes a dedicated
fireworks-azureprovider separate from the Fireworks gateway;offrestores byte-for-byte and switching modes replaces it cleanly.
| Harness | Writes | Provider |
|---|---|---|
| OpenCode | provider.fireworks-azure in opencode.json (@ai-sdk/openai-compatible, options.baseURL + options.apiKey) |
fireworks-azure/<deployment> |
| Codex | [model_providers.fireworks-azure] in config.toml (wire_api = "chat", bearer or env_key = "AZURE_API_KEY") |
fireworks-azure |
| Pi | custom openai-completions provider in models.json (baseUrl, authHeader, apiKey literal or $AZURE_API_KEY) + defaultProvider in settings.json |
fireworks-azure |
| Cursor | OpenAI-compatible URL, deployment, and key in state.vscdb |
<deployment> |
| VS Code | custom endpoint model in chatLanguageModels.json; key in safeStorage |
<deployment> |
fireconnect <harness> status reports azure as the provider with the endpoint and model.
Claude Code is intentionally excluded: it speaks the Anthropic Messages API, which Foundry does not expose.
model listreads the Fireworks catalog and isn't used in Azure mode — select a deployment with--model.
Harness-first: fireconnect <harness> <command>, plus a few global commands.
Per harness (claude, opencode, codex, pi, cursor, vscode, deepseek)
fireconnect <harness> on Route the harness through Fireworks (default if no command).
fireconnect <harness> off Restore your previous provider/config.
fireconnect <harness> status Show the provider, auth, and model mapping.
fireconnect <harness> help Show help for that harness.
All model changes go through <harness> on. Claude adds fireconnect claude usage, fireconnect claude live, and fireconnect claude demo.
Global
fireconnect login Sign in — browser (creates a key) or paste a key you have.
fireconnect logout Clear the stored key (keychain entry + config ref).
fireconnect status Show sign-in state, machine environment, and key storage.
fireconnect model list Browse the serverless catalog.
fireconnect configure Set the provider (Azure/Foundry) and the Anthropic key.
fireconnect claude demo Race two models on the same prompt via Claude Code.
fireconnect upgrade Update FireConnect.
fireconnect uninstall Disable + restore all harnesses, then remove FireConnect.
fireconnect --version Print the installed CLI version (-V; --json for machine-readable).
fireconnect help Show help.
login asks one question: create an API key for this machine, or paste one you already have.
Create opens the browser, mints fireconnect-{hostname}, and stores it in the OS keychain —
confirming the account and where the key went. Paste masks input, validates live, and stores
only on success. --paste skips the chooser; --with-token reads from stdin (CI).
logout removes the local key and offers to revoke the machine key server-side (--revoke /
--keep-key skip the question). You don't have to start with login — fireconnect claude
runs the same sign-in inline when a key is needed.
~/.fireconnect/config.jsonholds a reference ({keychain:fireworks-api-key}), never a literal key. Legacy installs may still have{env:FIREWORKS_API_KEY}.- The key itself lives in the OS keychain, or an encrypted-file / plaintext fallback tier when
no secret service is available (
fireconnect statusreports which). - Harness configs hold baked literals for Claude's custom header, Codex, OpenCode, Pi, and
DeepSeek Harness; Cursor and VS Code use IDE
safeStorage. - Claude websearch MCP no longer uses a shell hook — the Bearer token is baked into
~/.claude.json. Re-runninginstall.shorfireconnect upgradeshares one finalize path that rebakes enabled harness configs (and any existing websearch entry) to literals, including legacy env-reference auth left on disk.
FIREWORKS_API_KEY interaction. The env var and FireConnect-managed storage are mutually
exclusive for login and other explicit store paths. When it's set, login verifies and uses
it without copying it into the secret store, and combining login with a key-storing option
(--api-key, --with-token, browser, paste) fails before anything changes — unset the variable
first. <harness> on may still read it, persist it, and bake it into that harness's config.
| Symptom | Fix |
|---|---|
| Tool still uses the old model or provider | Fully restart the harness. In Claude Code, exit and claude --resume <id> — settings apply per session. |
| Cursor / VS Code changes don't stick | Quit the IDE (Cmd-Q) before on/off; the running app flushes its own state over yours. |
| Only Fireworks models respond in Cursor | Expected while FireConnect is on. fireconnect cursor off restores built-in models. |
| Claude session breaks after pasting an image | A text-only slot was active. /rewind, then map that slot to a vision model. |
| Claude Code shows a scary cost estimate | It uses Anthropic list prices. Check fireconnect claude status for real Fireworks rates. |
firerouter missing from a picker |
Needs workspace BYOK or a forwardable ANTHROPIC_API_KEY; otherwise select it explicitly with on --model firerouter. Not available on Fire Pass keys. |
login fails with a key-storage conflict |
FIREWORKS_API_KEY is set. Unset it to let FireConnect store a key. |
/model picker ignores your main model |
A legacy env.ANTHROPIC_MODEL is overriding it — re-run fireconnect claude once to migrate. |
PowerShell install fails (set: pipefail\r) |
Install from Git Bash. |
| Linux warns the key isn't encrypted | Install libsecret (secret-tool); Chromium's fallback is obfuscation, not encryption. |
| Something else | fireconnect status shows sign-in, environment, storage tier, and every harness's state. |
fireconnect upgrade
# or re-run the installer:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/fw-ai/fireconnect/main/install.sh)"Interactive terminals also offer an upgrade prompt when a newer version is cached
(Upgrade now?); declining snoozes it for a day.
Upgrading from before 0.9.0 with Claude Code connected asks before temporarily restoring
your original settings, then tells you to reconnect with fireconnect claude. From 0.9.0
onward, reinstall and upgrade leave harness settings alone. Other harness settings and your
stored API key are preserved either way.
fireconnect uninstall # restores every harness, then removes ~/.fireconnect and the launcher