Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>FlipSideNew to Visual Studio Code? Get it now.
FlipSide

FlipSide

Dave Arteaga

|
1 install
| (0) | Free
Automatically transfers a rejected Claude or Codex prompt to the other assistant, then asks before switching back after limits reset.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

FlipSide

One status bar item that shows Claude Code usage by default and toggles to Codex usage on click. Both assistants share the same status bar slot, so the item never moves when you switch.

$(sparkle) Claude 79% · 8%      <-- click -->      $(rocket) Codex 0% · 36%

The two numbers are the session and weekly windows, as used %. Hover for a full breakdown: per-window bars, reset countdowns, plan type, and the weekly usage split.

Automatic failover

When your preferred assistant runs out of tokens, FlipSide switches to the other one on its own and tells you why:

Claude is out of tokens (Session (5h) limit reached). Switched to Codex. Resets in 1h. Transferred your last prompt.

When the preferred assistant resets, FlipSide asks whether you want to change back. Choosing Yes switches the route and opens that assistant's VS Code extension; choosing Stay keeps the current assistant. This works in both directions.

When both are out you get:

You currently have no tokens. Both Claude and Codex are out. Claude resets in 1h; Codex resets in 3d 4h.

That popup is rate-limited to once every 10 minutes so a poll loop cannot spam you, but asking explicitly always shows it.

An assistant counts as out of tokens when the backend reports a lock reason, a limit_reached / allowed: false flag, a spend-control block, or any window at 100% utilisation.

What re-prompting can and cannot do

When a provider runs out, FlipSide reads that provider's newest human prompt from its local session transcript for the current workspace. It then opens the other provider's VS Code extension and submits the recovered prompt there; no manual copy and paste is required.

Prompts sent through FlipSide: Ask are tracked directly. Prompts typed inside Claude Code or Codex are recovered from ~/.claude/projects or ~/.codex/sessions; they must be newer than repromptMaxAgeMinutes.

Everything else — exhaustion detection, auto-switching, the status bar, and the both-empty popup — works no matter where you prompt.

Transferred prompts keep their original line breaks. A prompt fingerprint is remembered for 24 hours so reloads and repeated usage polls cannot submit the same handoff twice.

Codex compatibility

The Codex VS Code extension does not currently expose a public command for submitting arbitrary prompt text. To preserve and submit the original prompt, FlipSide installs a narrowly scoped compatibility change in the local Codex extension and saves a versioned backup beside the changed file. A Codex update may require one VS Code window reload while FlipSide reapplies the bridge.

How it gets the data

Assistant Credential Endpoint
Claude ~/.claude/.credentials.json (macOS Keychain first) api.anthropic.com/api/oauth/usage
Codex ~/.codex/auth.json chatgpt.com/backend-api/wham/usage

Both are read-only GETs using the login the CLIs already wrote. Nothing is stored or sent anywhere else. If the Claude API is unreachable, the extension falls back to ~/.claude/usage-cache.json, which the Claude Code CLI maintains.

Usage for both assistants refreshes on every poll, so switching shows the cached value instantly and revalidates in the background.

The claude CLI is often not on PATH; the extension falls back to the binary bundled inside the Claude Code extension (resources/native-binary/claude.exe).

Commands

  • FlipSide: Ask (auto-failover) — prompt box, routed to whoever has tokens
  • FlipSide: Retry Last Prompt — re-send the last prompt to whoever has tokens
  • FlipSide: Toggle Claude / Codex — same as clicking the item
  • FlipSide: Select Assistant — quick pick showing both, with live usage
  • FlipSide: Refresh Usage
  • FlipSide: Show Usage Details

Settings

All under flipSide.*:

Setting Default Meaning
refreshIntervalSeconds 60 Poll interval (min 15)
compact false Icon + one percentage only
showRemaining false Show remaining % instead of used %
warningThreshold 60 Used % that turns the item yellow
dangerThreshold 90 Used % that turns the item red
statusBarAlignment left Which side of the status bar
statusBarPriority 1000 Higher moves it further left
codexHome "" Override ~/.codex
autoSwitchOnExhaustion true Switch automatically when one runs out
autoReprompt true Recover and hand off the last workspace prompt on a switch
repromptMaxAgeMinutes 30 Don't re-send prompts older than this
claudeCliPath "" Full path to the claude CLI
codexCliPath "" Full path to the codex CLI

Set autoReprompt to false to be asked first via a Transfer to ... button instead of having the prompt dispatched for you.

Hiding the standalone usage extensions

mhelbich.claude-code-usage-status and ganymede404.vscode-codex-usage each add their own status bar item. To hide them without uninstalling, right-click the status bar and untick Claude Usage and Codex Usage.

Publish to the VS Code Marketplace

The manifest uses publisher ID DaveArteaga, package name flipside-ai-handoff, display name FlipSide, and version 1.0.0. It publishes under the Marketplace identifier DaveArteaga.flipside-ai-handoff.

Before publishing publicly

  1. Confirm that the included MIT LICENSE file uses the correct copyright holder.
  2. A public source repository is recommended but optional. This package enables VSCE's supported allowMissingRepository option so you can publish without inventing a repository URL. Add a real repository URL later if you create one.
  3. Optionally add a PNG icon of at least 128x128 pixels and reference it with the icon field. Marketplace extension icons cannot be SVG files.
  4. Review the privacy and security disclosure. This extension reads local Claude and Codex credentials and session transcripts. Its exact Codex prompt handoff also applies a compatibility change to the installed Codex extension because Codex does not expose a public arbitrary-prompt command. That behavior should be clearly disclosed and made opt-in, or replaced with a supported integration, before a public release.

Package and test

Open PowerShell in this extension directory:

npm install --global @vscode/vsce
vsce ls
vsce package

vsce ls shows every file that will be shipped. vsce package creates flipside-ai-handoff-1.0.0.vsix. Test that exact package before publishing:

code --install-extension .\flipside-ai-handoff-1.0.0.vsix --force

Use the generated filename if you changed the package name, then run Developer: Reload Window and test failover in both directions.

Authenticate and publish

For a manual PAT-based publish:

  1. In Azure DevOps, create a Personal Access Token for All accessible organizations with Marketplace > Manage scope. Never commit or paste that token into a source file.

  2. Authenticate the publisher:

    vsce login DaveArteaga
    
  3. Paste the PAT when prompted.

  4. Publish from this directory:

    vsce publish
    

Alternatively, upload the generated .vsix manually from the Visual Studio Marketplace publisher management page. Microsoft is retiring global Azure DevOps PATs on December 1, 2026, so use Microsoft Entra ID secure automated publishing for ongoing releases.

Publish an update

Every Marketplace release needs a new semantic version. After making and testing changes, publish a patch update with:

vsce publish patch

That changes 1.0.0 to 1.0.1 and publishes it. Use minor for a feature release or major for a breaking change. The official references are the VS Code publishing guide and extension manifest reference.

Install note

VS Code manages the installed folder and registry entry when you install the packaged VSIX. After editing an unpacked development copy, run Developer: Reload Window.

Layout

File Role
extension.js Activation, state, failover orchestration, commands
src/claude.js Claude credentials, usage fetch, cache fallback
src/codex.js Codex credentials, usage fetch
src/limits.js Shared "is it out of tokens" rules
src/dispatch.js Native extension prompt handoff, with CLI helpers
src/prompts.js Workspace-scoped prompt recovery from local sessions
src/render.js Status bar text, tooltip, colours
src/http.js Small GET helper
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft