Skip to content

Troubleshooting

The add-in won't load / "This add-in is not supported"

  • Confirm you're using Microsoft 365 (current channel). The manifest requires SharedRuntime 1.1, WordApi 1.3, ExcelApi 1.1, and PowerPointApi 1.4. Perpetual Office 2016/2019/2021 won't satisfy these.
  • Make sure the dev server is running on HTTPS (https://localhost:3000) and the certificate files exist. Office blocks HTTP and untrusted certs.
  • Re-upload the manifest if you edited manifest.xml.

Connection test fails

  • Key rejected (401/403): wrong or expired API key. Regenerate it.
  • 404: wrong endpoint path. Endpoints are base URLs (no trailing slash), e.g. https://opencode.ai/zen/go/v1, not /v1/chat/completions.
  • CORS error: the provider doesn't allow browser-origin requests. On a self-hosted deployment, enable Advanced → Proxy API requests through this server to forward requests server-to-server. On a hosted instance, use a CORS-friendly provider (OpenAI, Gemini, Anthropic, OpenRouter), see Compatibility.
  • Anthropic CORS: the add-in sends the anthropic-dangerous-direct-browser-access header automatically; if you're calling Anthropic through a proxy that strips headers, add it there.
  • Ollama unreachable: confirm ollama serve is running and the model is pulled. The endpoint must match where ollama serve is listening (localhost for a local install, or the server address for a shared Ollama).

When to use the old /chat/completions endpoint

Some OpenAI-compatible endpoints (and older Ollama versions) don't implement the Responses API (/responses). If tool calls or streaming misbehave, open Settings → Advanced and enable Use old /chat/completions endpoint.

Reasoning block never appears

Reasoning depends on the model, not the add-in:

  • The model must actually emit reasoning tokens (e.g. a DeepSeek-style model via OpenCode Zen, Claude thinking, Gemini thought parts).
  • Non-reasoning models produce no block, and that's expected.

If reasoning used to work and stopped, check you're on the latest build; the OpenCode Zen stream uses response.reasoning_text.delta, which is handled explicitly.

The model returns an empty response

The add-in shows a visible note when a reply comes back empty with no tool call. Causes and fixes:

  • Output token limit: the reply was cut off. Raise Max Tokens in Settings (Advanced).
  • Provider stall / malformed request: retry, or run Test Connection.

A truncated reply (content but cut off) shows a specific truncation notice instead.

"PowerPoint assigned new ids" warning

OOXML write-backs re-import the slide, which makes PowerPoint renumber the slide and all its shapes. After any edit_slide_text / edit_slide_xml, re-run list_slide_shapes to get fresh shape ids before more edits. This is expected behavior, not a bug.

Shapes silently dropped after an OOXML edit

PowerPoint can drop malformed XML during re-import. The tool verifies the re-imported shape count and warns when shapes were lost. Prefer insert_slide_element for adding shapes; use edit_slide_xml only for text/table-level edits you can't do otherwise, and verify with read_slide afterwards.

"Cannot read properties of null (reading 'async')" in edit_slide_xml

The tool exposes a slidePath global; the zip always contains exactly one slide at that path. Never guess position-based names like slide2.xml; they don't exist. If you still see the error, use zip.file(slidePath).

Office.js property-not-loaded errors in execute_office_js

Office.js proxies only expose loaded properties. Before reading, load and sync:

js
const shapes = slide.shapes;
shapes.load("top,left,width,height,name");
await context.sync();
const items = shapes.items;

The add-in appends this hint to the error automatically when it detects a property-not-loaded failure.

The conversation looks wrong or I want a clean slate

  • Clear conversation: trash icon in the header.
  • Reset settings: clear browser storage for the add-in's origin, or overwrite fields and press Apply.

Still stuck?

Use debug export (copy button in the chat); it captures the full conversation, tool traces, and debug log. Paste it into a GitHub issue with a description of what you did.

OpenDocBot License · Copyright © 2026 OpenDocBot