Skip to content

provider config in createSession() is ignored - cannot use local Ollama models despite TypeScript types suggesting support #180

@jageenshukla

Description

@jageenshukla

Summary

The SDK's TypeScript types include a provider configuration option in createSession() that suggests support for custom OpenAI-compatible providers (like Ollama), but the CLI completely ignores this configuration and always connects to GitHub's hosted models.

This prevents developers from:

  • Using local Ollama models for privacy-sensitive code review
  • Running the SDK in air-gapped/offline environments
  • Avoiding API costs by using local models
  • Testing with self-hosted model infrastructure

Expected Behavior

Based on the TypeScript types, this should work:

const session = await client.createSession({
    model: 'deepseek-coder-v2:16b',
    provider: {
        type: 'openai',
        baseUrl: 'http://localhost:11434/v1'  // Ollama endpoint
    },
    streaming: true
});

Expected: SDK connects to http://localhost:11434/v1 instead of GitHub's API.

Actual Behavior

The provider config is silently ignored:

  1. Session creates successfully ✅
  2. CLI always connects to GitHub's hosted API ❌
  3. Local Ollama models are never called ❌
  4. No error or warning that provider config was ignored ❌

Evidence / Investigation Results

1. TypeScript Types Suggest Feature Exists

Location: node_modules/@github/copilot-sdk/dist/index.d.ts

export interface SessionOptions {
    model: string;
    provider?: {
        type: 'openai';
        baseUrl: string;
        apiKey?: string;
    };
    streaming?: boolean;
    systemMessage?: string;
    tools?: Tool[];
}

The types clearly define provider as an optional parameter with baseUrl support.

2. CLI Ignores Provider Config

Test Code:

import { CopilotClient } from '@github/copilot-sdk';

const client = new CopilotClient({
    logLevel: 'debug',
    cliPath: './node_modules/.bin/copilot'
});

// Ollama is running at localhost:11434
const session = await client.createSession({
    model: 'deepseek-coder-v2:16b',
    provider: {
        type: 'openai',
        baseUrl: 'http://localhost:11434/v1'  // Should use this
    },
    streaming: true
});

await session.send({ prompt: 'Say hello' });

Result:

✅ Session created
📨 Event: user.message
📨 Event: assistant.turn_start
📨 Event: session.usage_info
📨 Event: pending_messages.modified (repeats indefinitely)
⏰ Timeout after 30s (no response from Ollama)

Ollama Logs (running with ollama serve):

# Ollama receives NO requests from the SDK
# Confirmed with: ollama serve --debug
# Only sees health checks from curl, zero requests from Copilot CLI

3. Environment Variable Overrides Don't Work

Attempted various environment variables to force provider config:

# None of these work
export GITHUB_COPILOT_API_URL="http://localhost:11434/v1"
export COPILOT_API_URL="http://localhost:11434/v1"
export COPILOT_ENDPOINT="http://localhost:11434/v1"
export OPENAI_API_BASE="http://localhost:11434/v1"
export OPENAI_BASE_URL="http://localhost:11434/v1"

Result: All ignored, CLI still connects to GitHub.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions