Embedded Knowledge lets you bundle documents directly in your declarative agent’s app package, no SharePoint, no cloud storage, no infrastructure. Drop the files in, point the manifest at them, and your agent answers from real content.
What Is Embedded Knowledge?
In the declarative agent manifest, capabilities is an array that tells Copilot what your agent can do beyond basic chat. Think of it as a feature menu; you enable what you need and leave the rest off.
Embedded Knowledge is one of those capabilities. It lets you bundle document files (Word, PowerPoint, Excel, PDF, text) directly in your app package. The agent uses them for grounding its responses without needing a SharePoint site or any external storage. The documents ship with the agent.
Why does this matter? Two reasons:
- Simplicity: If your knowledge is contained in a few key documents, you don’t need to set up a SharePoint site and manage permissions. The files are right there in the package.
- Portability: When someone installs your agent, they get the knowledge included. No “make sure you have access to this SharePoint library” setup instructions. No broken links on day one.
For our HR Onboarding Buddy at Zava Insurance, we have three core documents that every new hire needs:
- Employee Handbook (
employee-handbook.docx): PTO policy, remote work guidelines, code of conduct, org structure, expense policy, DEI programs, performance reviews, and more. - Benefits Guide (
benefits-guide.docx): Health insurance tiers, 401(k) matching, parental leave, fertility benefits, HSA/FSA options, tuition reimbursement, wellness stipend. - IT Setup Guide (
it-setup-guide.docx): Laptop configuration, Entra ID provisioning, VPN setup, mobile enrollment, developer environment, software licenses.
These are detailed, real-world documents. The handbook alone covers everything from bereavement leave to the holiday calendar. Let’s wire them up.
Adding Files to the App Package
First, place the .docx files in the appPackage/EmbeddedKnowledge/ folder. This is the default location for embedded knowledge files, though any path within appPackage/ will work. We’ll use the default location in this post:
appPackage/
├── manifest.json
├── declarativeAgent.json
├── instructions.txt
└── EmbeddedKnowledge/
├── employee-handbook.docx
├── benefits-guide.docx
└── it-setup-guide.docx
Pay attention to the file constraints! Max 10 files, 1 MB each. Supported formats are .doc, .docx, .ppt, .pptx, .xls, .xlsx, .txt, and .pdf. Markdown files are not supported, but Word documents work perfectly for most scenarios.
Configuring the Manifest
Now open declarativeAgent.json and add the EmbeddedKnowledge capability:
"capabilities": [
{
"name": "EmbeddedKnowledge",
"files": [
{ "file": "EmbeddedKnowledge/employee-handbook.docx" },
{ "file": "EmbeddedKnowledge/benefits-guide.docx" },
{ "file": "EmbeddedKnowledge/it-setup-guide.docx" }
]
}
]
The EmbeddedKnowledge capability requires schema v1.6 or later. Make sure your declarativeAgent.json includes "version": "v1.6" and the $schema URL points to the v1.6 schema.
The file paths are relative to the manifest location. No site IDs, no URLs, no GUIDs; just file paths.
Sensitivity Labels
If your embedded documents have sensitivity labels applied, the highest sensitivity label among all your files will be applied to the entire agent. This ensures the agent respects the most restrictive classification across all its knowledge sources. For HR documents like ours at Zava Insurance, this means the agent automatically inherits the appropriate protection level.
Updating the Instructions
Adding the files is only half the story; you also need to tell the agent how to use them. I updated the instructions to include:
“You have access to three key Zava Insurance documents: the Employee Handbook, Benefits Guide, and IT Setup Guide. Always cite the specific document name when answering from these sources. If a question isn’t covered in any of these documents, say so clearly and do not guess.”
That last part is critical. Without it, the agent might hallucinate answers that sound like they came from a document but didn’t. Always tell your agent to acknowledge when it doesn’t have the answer.
Seeing It in Action
Three questions, three documents, all cited correctly, shipped entirely in the app package.
When to Use Embedded Knowledge vs. SharePoint
This is the most common question I get. Here’s how to decide:
| Scenario | Use |
|---|---|
| A few stable documents (< 10 files, < 1 MB each) | Embedded Knowledge |
| Large document libraries or frequently updated content | SharePoint |
| Documents that need per-user access control | SharePoint |
| You want the simplest possible setup | Embedded Knowledge |
| Documents shared across multiple agents | SharePoint |
Embedded Knowledge and SharePoint aren’t mutually exclusive. You can use both in the same agent. Start with Embedded Knowledge for your core, stable documents and add SharePoint for larger or more dynamic content libraries.
The principle is intentional configuration: enable only what makes sense for your scenario. Every capability you add is a capability the agent might use when you don’t expect it. Be deliberate.
What Value Did We Just Add?
Three .docx files and about 10 lines of JSON turned a generic chatbot into a grounded HR assistant that answers from real company documents and cites its sources.
A new hire at Zava Insurance can now ask about PTO, health insurance, or VPN setup and get accurate, sourced answers instantly, instead of waiting for HR emails or digging through SharePoint.
Resources
Have questions or want to share what you're building? Connect with me on LinkedIn or check out more on The Manifest.