Skip to content

Fable 5 Model Lacks Support #762

@rubberduck-lgtm

Description

@rubberduck-lgtm

I saw that #760 was closed.

The root problem here is in setSessionConfigOption() in the ACP bridge: it validates the model value against initializationResult.models and throws for any ID not in that list. For users of ACP-based editors like Zed, this means the model (claude-fable-5) is completely inaccessible — there's no way to specify a model that isn't in the initialization response.

The issue is that initializationResult.models and what Claude Code actually accepts are two different views, and they're not always in sync. We verified this: claude-fable-5 is already accepted by Claude Code today — when the model ID is passed through to query.setModel(), it works correctly.

We also verified that invalid model IDs are handled properly end-to-end. When we specified claude-fable-6 (a nonexistent model), Claude Code returned a clean model_not_found error that the bridge correctly surfaced to Zed:

message: "Internal error: There's an issue with the selected model (claude-fable-6). It may not exist or you may not have access to it.",
data: { errorKind: 'model_not_found' }

This demonstrates that Claude Code is already the authoritative validator for model IDs. The bridge's own validation against initializationResult.models is redundant — and in the case of claude-fable-5, it blocks a model that already works while providing no useful error signal that Claude Code wouldn't provide itself.

One possibility for a fix is straightforward: when a model ID isn't present in initializationResult.models, pass it through to query.setModel() rather than throwing at the bridge layer.

if (!validValue) {
    if (params.configId === "model") {
        validValue = { value: params.value, name: params.value, description: "" };
    } else {
        throw new Error(`Invalid value for config option ${params.configId}: ${params.value}`);
    }
}

This could potentially be opt-in. I would like to make a patch to Zed so that users can provide their own user-specified model names, but allowing this requires that the Claude Agent ACP allow models that Claude Code supports but which are not yet in the model list.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions