Skip to content

[Feature]: Add GitHub Copilot as memory search embedding provider #61717

@feiskyer

Description

@feiskyer

Summary

Add GitHub Copilot as a memory search embedding provider so users with Copilot subscriptions can use embeddings without a separate OpenAI/Gemini API key.

Problem to solve

Users who have GitHub Copilot subscriptions (Individual, Business, or Enterprise) currently must configure a separate OpenAI, Gemini, or other API key to use memory search embeddings. Many developers already have Copilot access through their GitHub plan but lack separate embedding provider API keys, leaving memory search unavailable or requiring extra setup.

Proposed solution

Add a MemoryEmbeddingProviderAdapter to the existing github-copilot bundled plugin that:

  • Reuses the existing Copilot token infrastructure (GitHub OAuth → Copilot API token exchange)
  • Discovers available embedding models dynamically via the Copilot /models endpoint
  • Picks the best model automatically (prefers text-embedding-3-small)
  • Sends embedding requests to the OpenAI-compatible Copilot /embeddings endpoint
  • Registers at auto-selection priority 15 (between local and OpenAI) so Copilot is tried before paid API keys
  • Falls through gracefully when no GitHub token is available

Config: agents.defaults.memorySearch.provider: "github-copilot" or auto-detected when provider: "auto".

Alternatives considered

  • Requiring users to configure a separate OpenAI API key — adds friction for users who already have Copilot.
  • Using a hardcoded default model instead of dynamic discovery — less flexible as Copilot model availability varies by plan.
  • Creating a separate plugin instead of extending the existing github-copilot plugin — over-engineered, the embedding capability naturally belongs with the existing Copilot provider.

Impact

  • Affected: All users with GitHub Copilot subscriptions who want memory search
  • Severity: Medium (feature gap, not a bug)
  • Frequency: Every new user setup without a separate API key
  • Consequence: Memory search unavailable or requires extra API key setup that could be avoided

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