mrkeyoor.com_
Sat 17 Oct 13:32 UTC
LLM Toolsevaluationupdated 13 Oct 2026

M365-Copilot2API review

M365-Copilot2API is a self-hosted gateway that lets familiar AI clients send requests through a Microsoft 365 Copilot account using a private Microsoft chat protocol. Its main README is Chinese, with an English translation available. It provides an account and key management console for people who want to operate that relay themselves.

+8 / 3dstars / 7d
Verdict

Our M365-Copilot2API run built in 23 seconds and passed all 8 tests, but it did not verify Microsoft account access or coding-client file operations. Try it for personal use only if you can investigate private-protocol and client integration failures. Skip it for paid API resale or a coding workflow that needs dependable local edits immediately.

We ran it

Lab card: what happened when we ran M365-Copilot2APIScreenshot of M365-Copilot2API (github.com/HEXUXIU/M365-Copilot2API)
Install✓ · 12s12 packages
Build✓ · 23s
Tests✓ · 45s8 passed · 0 failed of 8 (go test)
Repo248 files~34,899 lines of source · 3.2 MB · 2 CI workflows · Dockerfile · tests dir

Answers from our run

Does M365-Copilot2API build from source?

Dependencies installed in 12 seconds (12 packages), and the build succeeded in 23 seconds. We cloned commit c322950 into a clean Debian container with 3 CPUs and no project-specific setup.

Do M365-Copilot2API's tests pass?

Yes. The project's own test command finished in 45 seconds and reported 8 passed, 0 failed (go test).

Who should not use M365-Copilot2API?

Businesses selling API access: the license expressly restricts paid API relay operation without a separate commercial license.

What are the alternatives to M365-Copilot2API?

LiteLLM, One API. Our M365-Copilot2API run built in 23 seconds and passed all 8 tests, but it did not verify Microsoft account access or coding-client file operations.

Setup3/5Local checks pass, account authorization includes a manual callback
Docs3/5English guide exists, but Docker guidance contradicts checked-in files
Community3/5October push and recent client integration reports
Maturity2/5Passing lab checks, with unresolved file-access and output reports

Who it’s for

Technical personal users with a Microsoft 365 Copilot account who accept the private-protocol dependency.
Developers willing to check their actual client, streaming output, and tool operations before relying on compatibility claims.
Operators who want a local console for gateway keys and cloud conversations while keeping Microsoft as the upstream service.

Who it’s NOT for

Businesses selling API access: the license expressly restricts paid API relay operation without a separate commercial license.
Developers needing dependable local project edits immediately: issue 105 reports inconsistent file access from Claude and OpenCode clients.
Shared services needing proven user isolation: the README explicitly describes conversation reuse across IPs and accounts.
Teams expecting framework support from the maintainer: the README declines third-party agent adaptation and troubleshooting.
Applications requiring local-only prompt processing: this gateway sends work to Microsoft cloud conversations.

Setup reality

Our run installed commit c322950 in 12 seconds, adding 12 packages. The build succeeded in 23 seconds, and the test step passed in 45 seconds with 8 passed and 0 failed of 8. The Go 1.24 Debian sandbox had 3 CPUs, 8 GB of RAM, no secrets, and no elevated privileges.

Useful operation needs a Microsoft 365 Copilot account, browser authorization with a manually pasted callback URL, an administrator password change, and a gateway API key. Configure the client base URL and remove conflicting authentication variables where needed. Our run did not verify account-backed requests.

Docker and Compose files exist despite the README saying otherwise. The direct binary binds to loopback, but the Windows helper uses all interfaces and hardcoded paths. Persist and protect account tokens, keys, and session data, and inspect conversation-reuse and cleanup settings.

Familiar API requests reach Microsoft's private chat service

Pointing a coding client at M365-Copilot2API changes where its requests go. The Go gateway translates OpenAI and Anthropic request formats into Microsoft 365 Copilot's private ChatHub WebSocket protocol. You can keep a familiar client while using an authorized Copilot account behind it. The main README is Chinese, and an English translation exists. The project explicitly disclaims any Microsoft affiliation, which matters when deciding who can support a broken connection.

The repository itself is manageable: our checkout had 248 files, roughly 34,899 lines of source, and occupied 3.2 MB. Its admin console handles account authorization and API keys, then exposes usage and cloud conversations. That is useful for a technically capable personal user who wants visibility into the relay. Hosting this console yourself does not keep prompts on your machine: the upstream conversation still lives in Microsoft's service.

What happened when we ran it

Our run installed commit c322950 in 12 seconds, adding 12 packages, and built it in 23 seconds. The sandbox used golang:1.24-bookworm on October 12, 2026, with 3 CPUs and 8 GB of RAM. It was an unprivileged Debian container without secrets. Installation and compilation both succeeded, so this checkout cleared those local steps without a failure to explain.

The test step succeeded in 45 seconds, with 8 passed and 0 failed out of 8 in the supplied Go test summary. Our scan found 2 CI workflow files, a Dockerfile, a Compose file, and a tests directory. These are encouraging repository results. A no-secrets run cannot establish that a particular Microsoft account authorizes successfully, that an upstream model answers, or that a coding client's file operations survive protocol translation.

Account authorization includes a manual callback step

The English quick start asks you to sign into the console, change the administrator password, and authorize a Microsoft account. The browser popup can end on a blank or error page. Authorization is still incomplete: you must copy its full callback URL into the console and confirm it. That's a specific piece of setup work to expect, rather than a reason to restart the server repeatedly.

Our 12-package installation covers none of that account work. After authorization, you create a gateway API key and configure the client's base URL and authentication. The README warns that leftover Anthropic authentication variables can conflict in Claude Code. It also says the maintainer does not provide adaptation or troubleshooting for third-party agent frameworks. If changing a base URL fails to produce working tool calls, the integration work falls to you.

Docker files exist despite the README's contrary statement

The README says no official Dockerfile is provided, yet the repository contains a Dockerfile and Compose configuration. The image runs as a dedicated non-root user. Compose binds the published port to loopback and mounts persistent data plus an administrator bootstrap-password file. Those source files are more useful deployment evidence than the outdated paragraph, although we have not validated the container route.

The 23-second build result belongs to our Go sandbox, not a Docker image build. Launch method also changes the listen address: the binary defaults to loopback, while the Windows management script listens on all interfaces and hardcodes a checkout path. Review that script before using it from another directory. The console can reveal API keys, and account tokens reside in the data directory. Protect both the management route and its backups before exposing the service beyond your workstation.

Shared conversation reuse needs an isolation decision

Session reuse is a deliberate feature here. The README describes explicit session IDs, exact context-prefix matches, and a similarity fallback, including reuse across IP addresses and accounts. That may suit one person's conversations across machines. For unrelated users, identity-independent reuse warrants a close look before deployment. We would require an isolation check using separate accounts and unrelated conversation histories before trusting this design with shared access.

All 8 tests passed in our sandbox, but that result does not settle conversation privacy or upstream behavior. Cleanup can delete idle cloud conversations, and the README explains that deleting a cloud conversation also clears its local binding. Make the retention policy intentional. A user expecting permanent chat history could otherwise lose conversations through a feature the operator regards as routine cache cleanup.

Current file-access reports weaken the coding-agent case

Issue 105, updated October 12, reports inconsistent local file access from Claude and OpenCode clients, including a WSL environment. The author says document uploads work while analysis of local project directories does not. This is a user report, not a reproduced lab defect. It still addresses the exact reason many developers would adopt this gateway: making a coding client work on a real checkout.

Our 45-second test step gives no evidence about that complete workflow. Another open report, issue 102, describes reasoning output reaching a client while the answer is missing, plus intermittent truncation around code fences. Plain chat success is therefore too weak an acceptance criterion for a coding assistant. Check streaming output and a harmless file-edit round trip with the client you intend to use.

Paid API resale is expressly restricted

The license file adds a non-commercial API relay restriction to AGPL-3.0 and requires a separate commercial license for paid relay operation. The README also warns that proxy-based access may conflict with provider terms. That makes this a poor default for a business selling API access. Consider LiteLLM or One API when your job is managing ordinary provider APIs rather than adapting a Copilot subscription.

The last push was October 10, 2026, with 557 stars and 13 open issues and PRs. Release v0.7.3 arrived October 6 with English documentation and interface translation, while later issue reports show ongoing integration friction. The 3.2 MB checkout is approachable enough for personal investigation. Before depending on it for coding, require the local file operation that issue 105 says is unreliable.

Alternatives

ProjectWhat it isPick it when
LiteLLM gh↗A gateway and SDK that unify requests across model providers.pick this instead when routing ordinary provider APIs and managing spend is the job.
One API gh↗A service for managing provider connections and distributing API keys.pick this instead when you need provider API management rather than Copilot private-protocol translation.

What people are saying

  1. [github-trending] HEXUXIU/M365-Copilot2API

Sources

  1. Repository and Chinese README
  2. English setup and protocol guide
  3. License and API relay restriction
  4. Dockerfile
  5. Compose configuration
  6. Local file-access report, issue 105
  7. Output routing and truncation report, issue 102
  8. Release v0.7.3

More llm tools reviews

GLM-5.3-Flash-EXL3-2x-DGX-Sparks-TensorFold · livenerf · scion · opencode2api · IQuest-Q1 · iCode · the whole board →