nikivdev/code · error

browse is only supported for Codex sessions; use `f ai codex

Error message

browse is only supported for Codex sessions; use `f ai codex browse ...`

What it means

Raised in the Claude branch of `run_provider` in src/ai.rs: the `browse` action is implemented only for Codex sessions (browse_codex_sessions), so dispatching it under the Claude provider bails with a pointer to `f ai codex browse ...`. Unlike the Cursor arm, Claude supports most actions but explicitly excludes Browse and a few Codex-specific integrations.

Source

Thrown at src/ai.rs:800

/// Run the ai subcommand.
pub fn run(action: Option<AiAction>) -> Result<()> {
    let action = action.unwrap_or(AiAction::List);

    match action {
        AiAction::List => list_sessions(Provider::All)?,
        AiAction::Cursor { action } => run_provider(Provider::Cursor, action)?,
        AiAction::Claude { action } => match action {
            None => quick_start_session(Provider::Claude)?,
            Some(ProviderAiAction::List) => list_sessions(Provider::Claude)?,
            Some(ProviderAiAction::LatestId { path }) => {
                print_latest_session_id(Provider::Claude, path)?
            }
            Some(ProviderAiAction::Sessions { path, json }) => {
                provider_sessions(Provider::Claude, path, json)?
            }
            Some(ProviderAiAction::Browse { .. }) => {
                bail!("browse is only supported for Codex sessions; use `f ai codex browse ...`");
            }
            Some(ProviderAiAction::Continue { session, path }) => {
                continue_session(session, path, Provider::Claude)?
            }
            Some(ProviderAiAction::New) => new_session(Provider::Claude)?,
            Some(ProviderAiAction::Connect { .. }) => {
                bail!("connect is only supported for Codex sessions; use `f codex connect ...`");
            }
            Some(ProviderAiAction::Open { .. }) | Some(ProviderAiAction::Resolve { .. }) => {
                bail!("open/resolve is only supported for Codex sessions; use `f codex ...`");
            }
            Some(ProviderAiAction::Runtime { .. }) => {
                bail!(
                    "runtime helpers are only supported for Codex sessions; use `f codex runtime ...`"
                );
            }
            Some(ProviderAiAction::Doctor { .. }) => {
                bail!("doctor is only supported for Codex sessions; use `f codex doctor`");

View on GitHub (pinned to a747e741ae)

Solutions

  1. Use `f ai codex browse ...` for searchable session browsing
  2. For Claude, enumerate sessions with `f claude list` (or `f ai list` across providers) and filter externally
  3. Get the latest Claude session via `f claude latest-id` and inspect it with `f claude show`/`copy`
  4. Update triage scripts to branch: browse for Codex, list+filter for Claude

Example fix

// before
f claude browse --query "refactor"
// after
f ai codex browse --query "refactor"
# or for Claude:
f claude list | grep refactor
Defensive patterns

Strategy: validation

Validate before calling

fn supports_browse(provider: Provider) -> bool {
    matches!(provider, Provider::Codex)
}
if !supports_browse(provider) {
    eprintln!("browse requires Codex: use `f ai codex browse ...`; for Claude use `f claude list`");
    return;
}

Type guard

fn is_codex(provider: Provider) -> bool {
    matches!(provider, Provider::Codex)
}

Try / catch

if let Err(e) = run_provider(Provider::Claude, Some(ProviderAiAction::Browse { .. })) {
    if e.to_string().contains("browse is only supported for Codex") {
        eprintln!("falling back to `f claude list` + local filtering");
    } else {
        return Err(e);
    }
}

Prevention

When it happens

Trigger: Running `f claude browse ...` or `f ai claude browse ...`, i.e. run_provider/run's Claude match on Some(ProviderAiAction::Browse{..}). Occurs when searching/filtering session history is attempted against Claude transcripts.

Common situations: Searching Claude session history with a query the way `f ai codex browse` allows, scripts that use browse for session triage across providers, tab-completion suggesting browse under `f claude`.

Related errors


AI-assisted analysis of nikivdev/code@a747e741ae (2026-09-01). Data as JSON: /api/errors/90b20158f3c09348. Report an issue: GitHub.