Copilot's Data Blindness: The Custom Agent Fix
You think Microsoft Copilot knows your business. It doesn’t—and that blind spot is costing you real decisions.
In this episode, we expose the uncomfortable truth about Microsoft 365 Copilot: out of the box, it only sees surface-level data like emails, chats, and documents—not the systems that actually run your business. No Salesforce pipeline. No ServiceNow incidents. No proprietary APIs. Just a narrow slice of context that leads to confident but wrong answers.
We break down why Copilot is blind by default, how grounding really works, and why AI without secure access paths will always hallucinate. Then we show you the fix: building enterprise-grade Copilot agents using Copilot Studio and Teams Toolkit, wired directly into your real systems with governed identity, least-privilege access, and full audit trails.
You’ll learn:
How Copilot “sees” data—and why most organizations misunderstand it
The difference between AI theater and production-ready enterprise agents
How to ground Copilot in Salesforce, ServiceNow, SharePoint, and internal REST APIs
Why knowledge + tools (not prompts) are the key to trustworthy AI
When to use Copilot Studio vs. Teams Toolkit—and why the best teams use both
If you’re an IT leader, architect, developer, or security-minded decision maker, this episode shows how to move from demos to real, controlled, auditable AI inside Microsoft 365—without guessing, leaking data, or breaking governance.
No hype. No hallucinations. Just wiring, control, and AI that finally sees what matters.
Microsoft 365 Copilot doesn’t know your business—it only knows the tiny slice of your work graph it can see. Outlook threads. Teams chats. SharePoint files. That’s it.
No Salesforce. No ServiceNow. No proprietary APIs. No pipeline. No incidents. No truth. In this episode, you’ll learn why Copilot is blind by default—and how to give it sight by building a custom enterprise agent grounded on your real systems with governed identity, audited actions, and end-to-end visibility. We walk step-by-step through Copilot Studio and Teams Toolkit for VS Code to show how low-code and pro-dev combine into a single strategy: controlled access, precise tooling, and zero hallucination. By the end, you’ll know exactly how to build an agent that sees, reasons, acts—and obeys your rules. What You’ll Learn 🔍 Why Copilot Is Blind Out of the Box
- Copilot only “sees” Microsoft 365: email, chat, files.
- External systems—Salesforce, ServiceNow, internal APIs—are invisible without explicit access.
- Blindness leads to hallucinations, incorrect summaries, and missing insights.
🧠 The Architecture Behind Visibility
- Copilot doesn’t “understand”—it fetches through approved paths.
- You control vision through:
- Knowledge sources (SharePoint libraries, internal docs, public URLs)
- Tools (connectors, actions, APIs)
- No token = no access.
- No grounding = no truth.
Path 1: Copilot Studio — Declarative Agents for Fast Enterprise Wiring Build an agent that:
- Grounds itself on Salesforce, ServiceNow, and internal APIs
- Cites sources
- Refuses to guess
- Audits every tool call
- Obeys DLP and identity boundaries
What we configure:
- Identity & instructions
- Prioritized knowledge
- Salesforce & ServiceNow connectors
- A governed custom REST API tool
- Tool orchestration rules (renewal → Salesforce; ticket → ServiceNow; limits → API)
- Clarifying-question logic for ambiguity
- Guardrails: PII masking, policy refusal, “ask before answer” when confidence is low
The result? A governed, predictable, enterprise-safe agent that never hallucinates and never wanders. Path 2: Teams Toolkit for VS Code — Pro-Dev Precision and Control When you need:
- Strict input validation
- Custom schemas
- Conditional Access enforcement
- Low-latency backend execution
- Caching, retries, and SLA-aware design
What you build:
- A Copilot plugin with OpenAPI spec
- Handlers that call Salesforce, ServiceNow, and internal endpoints
- Normalized JSON responses with minimal projections
- Policy-aware middleware
- Correlation-ID logging
- Azure deployment with Managed Identity + Key Vault
The result? A hardened, auditable capability Copilot can call with total reliability. Studio vs Toolkit: When to Use Which
- Use Studio → fast wiring, governed orchestration, citations, maker-friendly maintenance
- Use Toolkit → strict logic, enterprise constraints, custom schemas, performance-sensitive actions
- Use both together → Studio orchestrates; Toolkit executes the truth
This hybrid pattern is the enterprise sweet spot. Enterprise Constraints That Can Break Your Build
- Licensing for Copilot, Studio, and premium connectors
- Admin approvals for OAuth apps and connectors
- DLP policies blocking external systems
- Conditional Access restrictions
- Data residency limitations
- Least-privilege scoping for Salesforce/ServiceNow/API
- Logging, audit, and governance requirements
Ignore these… and your demo fails live. Step-by-Step: Build Your First Enterprise Agent We walk through:
- Creating the agent in Studio
- Hardening instructions
- Adding and ranking knowledge
- Wiring Salesforce, ServiceNow, and internal API tools
- Setting orchestration and confidence rules
- Testing Activity Map flows
- Enabling audit, DLP, permissions
- Publishing to a pilot group
And yes—we show the mistakes most teams make and how to avoid them. Key Takeaways
- Copilot doesn’t know. It fetches.
- Vision comes from the paths you approve.
- Studio gives you the blueprint.
- Toolkit gives you the precision.
- Together, they turn a blind assistant into a governed enterprise agent with real sight.
Become a supporter of this podcast: https://www.spreaker.com/podcast/m365-show-podcast--6704921/support.
Follow us on:
LInkedIn
Substack
1
00:00:00,000 --> 00:00:01,680
You think Copilot knows your business.
2
00:00:01,680 --> 00:00:02,600
It doesn't. It's blind.
3
00:00:02,600 --> 00:00:04,600
It sees SharePoint headlines a few emailed
4
00:00:04,600 --> 00:00:07,360
stale teams chat, not the pipeline in Salesforce,
5
00:00:07,360 --> 00:00:08,640
not the outage in ServiceNow,
6
00:00:08,640 --> 00:00:10,000
not your proprietary API.
7
00:00:10,000 --> 00:00:11,120
That's the fracture.
8
00:00:11,120 --> 00:00:11,960
Here's the fix.
9
00:00:11,960 --> 00:00:14,120
We'll build a custom agent that grounds itself
10
00:00:14,120 --> 00:00:15,320
on your real systems.
11
00:00:15,320 --> 00:00:18,760
Salesforce, ServiceNow, your internal rest API.
12
00:00:18,760 --> 00:00:22,440
Gov. auth-ordited actions, live inside Microsoft 365.
13
00:00:22,440 --> 00:00:24,280
By the end, you'll have an enterprise-grade agent
14
00:00:24,280 --> 00:00:26,000
that actually sees and acts.
15
00:00:26,000 --> 00:00:29,000
No theater, real access, real control, stay.
16
00:00:29,000 --> 00:00:31,000
There's one step most teams skip.
17
00:00:31,000 --> 00:00:33,240
It's the difference between noise and truth.
18
00:00:33,240 --> 00:00:36,640
How Copilot sees and why it's blind by default.
19
00:00:36,640 --> 00:00:38,680
They told you Copilot understands your work.
20
00:00:38,680 --> 00:00:40,960
The truth is simpler and harsher.
21
00:00:40,960 --> 00:00:43,280
Copilot sees what it's grounded on.
22
00:00:43,280 --> 00:00:45,000
Nothing more, nothing less.
23
00:00:45,000 --> 00:00:49,960
Out of the box, its field of view is your Microsoft 365
24
00:00:49,960 --> 00:00:52,720
work graph, Outlook threads, teams chats, SharePoint
25
00:00:52,720 --> 00:00:55,560
and OneDrive files may be meeting transcripts useful,
26
00:00:55,560 --> 00:00:57,920
but narrow, a soft halo around your daily clicks.
27
00:00:57,920 --> 00:00:58,760
That's it.
28
00:00:58,760 --> 00:00:59,800
Not see Salesforce.
29
00:00:59,800 --> 00:01:01,520
Not the account health you live and die by.
30
00:01:01,520 --> 00:01:02,800
It does not see ServiceNow.
31
00:01:02,800 --> 00:01:04,280
Not incident priority.
32
00:01:04,280 --> 00:01:05,600
Not breached SLAs.
33
00:01:05,600 --> 00:01:08,160
It does not see your internal system sitting behind a firewall
34
00:01:08,160 --> 00:01:09,480
and a custom schema.
35
00:01:09,480 --> 00:01:10,320
It can't.
36
00:01:10,320 --> 00:01:11,080
There's no access path.
37
00:01:11,080 --> 00:01:12,720
No token, no tool, no grounding.
38
00:01:12,720 --> 00:01:14,880
So it guesses, hallucinates or shrugs.
39
00:01:14,880 --> 00:01:16,440
That's blindness.
40
00:01:16,440 --> 00:01:17,280
Why?
41
00:01:17,280 --> 00:01:18,400
Because identity and data aren't magic.
42
00:01:18,400 --> 00:01:20,320
They're pipes, tokens, policies.
43
00:01:20,320 --> 00:01:22,960
If you don't wire an action path to an external system,
44
00:01:22,960 --> 00:01:24,440
Copilot can't call it.
45
00:01:24,440 --> 00:01:26,040
If you don't expose a knowledge source,
46
00:01:26,040 --> 00:01:27,280
Copilot can't cite it.
47
00:01:27,280 --> 00:01:29,360
If you don't define instructions with strict boundaries,
48
00:01:29,360 --> 00:01:31,720
Copilot fills the void with confidence and errors.
49
00:01:31,720 --> 00:01:32,520
You've seen it.
50
00:01:32,520 --> 00:01:34,040
Friendly, wrong.
51
00:01:34,040 --> 00:01:35,080
Now the good news.
52
00:01:35,080 --> 00:01:36,680
The blindness is optional.
53
00:01:36,680 --> 00:01:38,440
You give it eyes by adding two things.
54
00:01:38,440 --> 00:01:39,480
Knowledge and tools.
55
00:01:39,480 --> 00:01:40,440
Knowledge is grounding.
56
00:01:40,440 --> 00:01:42,720
Documents, sites, tables, the sources you trust.
57
00:01:42,720 --> 00:01:43,600
Add your website.
58
00:01:43,600 --> 00:01:44,600
Add a FAQ.
59
00:01:44,600 --> 00:01:46,680
Add a SharePoint library of SOPs.
60
00:01:46,680 --> 00:01:49,040
In Copilot Studio, you can also attach higher value
61
00:01:49,040 --> 00:01:51,160
enterprise sources and prioritize them.
62
00:01:51,160 --> 00:01:52,560
Studio respects the ranking.
63
00:01:52,560 --> 00:01:53,400
It's sites.
64
00:01:53,400 --> 00:01:54,680
It stays inside the fence you draw.
65
00:01:54,680 --> 00:01:56,760
If you toggle web search off, it won't wander.
66
00:01:56,760 --> 00:01:58,720
Control beats clever.
67
00:01:58,720 --> 00:02:02,800
Tools are actions, connectors, flows, APIs.
68
00:02:02,800 --> 00:02:04,920
When you add a tool, you define the verbs your agent
69
00:02:04,920 --> 00:02:05,880
can perform.
70
00:02:05,880 --> 00:02:07,400
Send an email through Outlook.
71
00:02:07,400 --> 00:02:09,240
Pull an opportunity from Salesforce.
72
00:02:09,240 --> 00:02:10,760
Read an incident from ServiceNow.
73
00:02:10,760 --> 00:02:13,680
Call your internal rest endpoint with specific parameters.
74
00:02:13,680 --> 00:02:16,600
Every tool runs under a governed identity.
75
00:02:16,600 --> 00:02:19,680
Your entra up, your scopes, your DLP, no token, no action,
76
00:02:19,680 --> 00:02:21,840
simple rule, critical safety.
77
00:02:21,840 --> 00:02:24,200
What about default Copilot in M365?
78
00:02:24,200 --> 00:02:26,920
It can summarize your word doc, draft or reply, service a file,
79
00:02:26,920 --> 00:02:29,520
but ask it, what's the renewal risk on Acme?
80
00:02:29,520 --> 00:02:31,080
It searches the work graph.
81
00:02:31,080 --> 00:02:33,600
It finds nothing because the risk lives in Salesforce
82
00:02:33,600 --> 00:02:34,680
in a custom field.
83
00:02:34,680 --> 00:02:37,720
Behind OAuth, unknown, therefore invisible.
84
00:02:37,720 --> 00:02:40,080
Add a Salesforce tool to find the query.
85
00:02:40,080 --> 00:02:42,040
Map fields, constraints, scopes.
86
00:02:42,040 --> 00:02:44,080
Now ask again, it pulls the record.
87
00:02:44,080 --> 00:02:46,760
Grounds the answer, sites the source, no hallucination,
88
00:02:46,760 --> 00:02:49,760
just data, same with ServiceNow, same with your API.
89
00:02:49,760 --> 00:02:52,360
Vision appears the second you wire the access path
90
00:02:52,360 --> 00:02:54,040
and dies the second you remove it.
91
00:02:54,040 --> 00:02:56,160
If you remember nothing else, remember this.
92
00:02:56,160 --> 00:02:57,520
Copilot doesn't know.
93
00:02:57,520 --> 00:02:58,240
It fetches.
94
00:02:58,240 --> 00:03:00,560
Through the paths you approve, you build the eyes,
95
00:03:00,560 --> 00:03:02,480
you own the site.
96
00:03:02,480 --> 00:03:06,360
Path one, Copilot Studio, declarative agents for makers
97
00:03:06,360 --> 00:03:07,480
and low-code teams.
98
00:03:07,480 --> 00:03:09,200
You don't fix blindness with hope.
99
00:03:09,200 --> 00:03:10,280
You fix it with wiring.
100
00:03:10,280 --> 00:03:12,760
Studio gives you the wiring without drowning you in code.
101
00:03:12,760 --> 00:03:15,280
Declarative, fast, contained.
102
00:03:15,280 --> 00:03:18,000
Start inside Microsoft 365 Copilot,
103
00:03:18,000 --> 00:03:20,320
create agent, describe, keep it blunt.
104
00:03:20,320 --> 00:03:22,440
An internal agent that answers account health questions
105
00:03:22,440 --> 00:03:25,200
using Salesforce, incident status from ServiceNow
106
00:03:25,200 --> 00:03:28,160
and proprietary product limits from our internal API.
107
00:03:28,160 --> 00:03:30,720
Site sources, refusive data is missing,
108
00:03:30,720 --> 00:03:33,760
no external web, send, watch it, scuffle the shell, good.
109
00:03:33,760 --> 00:03:36,960
Now we harden it, switch to configure, identity first,
110
00:03:36,960 --> 00:03:39,520
name, icon, clear description, then the instructions.
111
00:03:39,520 --> 00:03:42,640
This is the handbook, plain, ruthless.
112
00:03:42,640 --> 00:03:44,720
Only answer using approved knowledge and tools
113
00:03:44,720 --> 00:03:47,040
always cite if a field is missing, say so.
114
00:03:47,040 --> 00:03:50,200
Never guess, escalate to support if confidence is low.
115
00:03:50,200 --> 00:03:53,680
Add fallback, when data is stale, ask to refresh.
116
00:03:53,680 --> 00:03:54,840
You're not writing poetry.
117
00:03:54,840 --> 00:03:56,640
You're building guardrails, knowledge next,
118
00:03:56,640 --> 00:04:00,000
grounding at SharePoint SOPs at your internal product FAQ.
119
00:04:00,000 --> 00:04:03,000
If you've got a public documentation site at that URL,
120
00:04:03,000 --> 00:04:05,320
then rank high priority for internal SOPs.
121
00:04:05,320 --> 00:04:07,680
Medium for the public docs, disable web search.
122
00:04:07,680 --> 00:04:10,080
You're curating truth, not collecting trivia.
123
00:04:10,080 --> 00:04:12,400
Tools, this is where the blindness breaks.
124
00:04:12,400 --> 00:04:14,320
Click add tool, Salesforce first.
125
00:04:14,320 --> 00:04:16,560
Choose the Salesforce connector, authenticate
126
00:04:16,560 --> 00:04:18,000
with an approved Entra app.
127
00:04:18,000 --> 00:04:20,800
Scope it tight, read only, accounts opportunities,
128
00:04:20,800 --> 00:04:22,560
help score, answer and see nothing else.
129
00:04:22,560 --> 00:04:25,600
Studio will ask for inputs, define them explicitly.
130
00:04:25,600 --> 00:04:28,160
Account name, fields to return.
131
00:04:28,160 --> 00:04:31,240
Add constraints, account name must match an existing record.
132
00:04:31,240 --> 00:04:35,040
No wildcards, map outputs to clear names, renewal risk,
133
00:04:35,040 --> 00:04:39,240
ARR, next step, source link, describe when to use it.
134
00:04:39,240 --> 00:04:42,280
Invoke for questions about account health, renewal risk,
135
00:04:42,280 --> 00:04:44,600
ARR, owner or next steps.
136
00:04:44,600 --> 00:04:47,040
Service now next, connector, OAuth,
137
00:04:47,040 --> 00:04:51,280
least privilege, incidents read, CMDB, read if you needed.
138
00:04:51,280 --> 00:04:53,920
Inputs, incident number or account name.
139
00:04:53,920 --> 00:04:55,320
Guard the resolution path.
140
00:04:55,320 --> 00:04:58,280
If incident number not provided, search by account name
141
00:04:58,280 --> 00:04:59,280
with limit three.
142
00:04:59,280 --> 00:05:02,720
If multiple, ask the user to disambiguate.
143
00:05:02,720 --> 00:05:06,680
Outputs, priority, state aslastitis, open by updated on link.
144
00:05:06,680 --> 00:05:09,520
User drool, use when user asks about open incidents,
145
00:05:09,520 --> 00:05:11,560
breached SLAs or ticket status.
146
00:05:11,560 --> 00:05:13,200
Now the custom rest API.
147
00:05:13,200 --> 00:05:16,280
Your crown jewels, click add a custom connector if it exists.
148
00:05:16,280 --> 00:05:20,080
If not, select HTTP with Azure AD, provide the base URL.
149
00:05:20,080 --> 00:05:23,000
Scope the enter app to only the needed endpoint.
150
00:05:23,000 --> 00:05:30,720
Post, limits query, inputs, product ID, customer tier, validation.
151
00:05:30,720 --> 00:05:33,880
Reject calls if product ID not in a proof list.
152
00:05:33,880 --> 00:05:36,800
Outputs, max users, rate limit, notes.
153
00:05:36,800 --> 00:05:40,200
User drool, use for product limit, plan entitlements or compliance caps.
154
00:05:40,200 --> 00:05:44,040
This is the moment most teams skip, prioritization and conditions.
155
00:05:44,040 --> 00:05:45,800
Open tool orchestration.
156
00:05:45,800 --> 00:05:48,440
Tell the agent which tool wins when questions overlap.
157
00:05:48,440 --> 00:05:51,200
If the user mentions renewal, prefer Salesforce.
158
00:05:51,200 --> 00:05:54,520
If they mention ticket or priority, prefer service now.
159
00:05:54,520 --> 00:05:58,040
If they mention limit or entitlement, prefer internal API.
160
00:05:58,040 --> 00:05:59,320
Set a confidence floor.
161
00:05:59,320 --> 00:06:01,600
If retrieval returns null for a critical field,
162
00:06:01,600 --> 00:06:03,960
ask a clarifying question before answering.
163
00:06:03,960 --> 00:06:08,040
Test, write, pain, ask, what's Acme's renewal risk and open incidents.
164
00:06:08,040 --> 00:06:09,240
Watch the activity map.
165
00:06:09,240 --> 00:06:12,120
It should call Salesforce with account name A.Acme.
166
00:06:12,120 --> 00:06:14,600
Pull healthscore.co.nl/ next step.
167
00:06:14,600 --> 00:06:17,720
Then call service now with account name A.Acme return top incident.
168
00:06:17,720 --> 00:06:19,480
The response should braid both sources.
169
00:06:19,480 --> 00:06:22,760
Scythe both include direct links if it didn't your tool conditions are wrong.
170
00:06:22,760 --> 00:06:23,560
Fix them now.
171
00:06:23,560 --> 00:06:26,840
Edge cases ask, what's beta-co's renewal risk?
172
00:06:26,840 --> 00:06:29,400
If beta-co doesn't exist, it should refuse politely.
173
00:06:29,400 --> 00:06:31,400
I can't find beta-co in Salesforce.
174
00:06:31,400 --> 00:06:33,000
Do you mean beta-copleted?
175
00:06:33,000 --> 00:06:34,360
That's controlled failure.
176
00:06:34,360 --> 00:06:35,000
You want that?
177
00:06:35,000 --> 00:06:38,120
Ask, what are pro-plan API limits for product X?
178
00:06:38,120 --> 00:06:39,720
It should hit your internal API.
179
00:06:39,720 --> 00:06:41,960
Return max users, rate limit, no fluff.
180
00:06:41,960 --> 00:06:43,880
If the tier is unknown, it should ask for tier.
181
00:06:43,880 --> 00:06:49,160
No guessing, safety, turn on audit, studio logs, tool calls, inputs, outputs, latency.
182
00:06:49,160 --> 00:06:52,200
You'll need that when someone asks why an answer was wrong.
183
00:06:52,200 --> 00:06:53,480
Configure DLP.
184
00:06:53,480 --> 00:06:58,360
If your tenant blocks external connectors for a department move this agent into an approved environment,
185
00:06:58,360 --> 00:06:59,080
don't sneak it.
186
00:06:59,080 --> 00:07:00,600
It will get blocked mid demo.
187
00:07:00,600 --> 00:07:01,720
You know how that looks?
188
00:07:01,720 --> 00:07:02,440
Bad.
189
00:07:02,440 --> 00:07:03,240
Governance.
190
00:07:03,240 --> 00:07:05,400
Add instructions for PII handling.
191
00:07:05,400 --> 00:07:07,640
Never include full email addresses in responses.
192
00:07:07,640 --> 00:07:09,000
Mask to user at domain.
193
00:07:09,000 --> 00:07:10,280
Add a red team prompt.
194
00:07:10,280 --> 00:07:13,000
If a user asks you to bypass policy refuse.
195
00:07:13,000 --> 00:07:14,360
Add an escalation rule.
196
00:07:14,360 --> 00:07:17,400
If asked to change data, hand off to an owner.
197
00:07:17,400 --> 00:07:18,280
Do not write.
198
00:07:18,280 --> 00:07:19,480
If you need actions later,
199
00:07:19,480 --> 00:07:21,160
you'll revise scopes and approvals.
200
00:07:21,160 --> 00:07:23,160
For now, read only is your friend.
201
00:07:23,160 --> 00:07:24,200
Performance.
202
00:07:24,200 --> 00:07:25,960
If answers feel slow, reduce fields.
203
00:07:25,960 --> 00:07:27,160
Don't fetch everything.
204
00:07:27,160 --> 00:07:29,560
Define a minimal projection per tool.
205
00:07:29,560 --> 00:07:31,560
Cash is managed by the platform.
206
00:07:31,560 --> 00:07:33,080
Don't assume persistence.
207
00:07:33,080 --> 00:07:36,520
Always designed for item-putent fresh reads, licensing reality.
208
00:07:36,520 --> 00:07:39,640
You'll need co-pilot studio licensing for premium connectors.
209
00:07:39,640 --> 00:07:41,320
Agent execution uses credits.
210
00:07:41,320 --> 00:07:42,920
Connectors may require admin approval.
211
00:07:42,920 --> 00:07:45,000
Get that before you record your it works moment.
212
00:07:45,000 --> 00:07:46,360
Otherwise denial at runtime.
213
00:07:46,360 --> 00:07:47,080
Theater dies.
214
00:07:47,080 --> 00:07:47,560
Truth wins.
215
00:07:47,560 --> 00:07:48,200
Publish.
216
00:07:48,200 --> 00:07:49,480
Share to a pilot group.
217
00:07:49,480 --> 00:07:50,440
Product managers.
218
00:07:50,440 --> 00:07:51,240
Support leads.
219
00:07:51,240 --> 00:07:51,960
Sales ops.
220
00:07:51,960 --> 00:07:54,520
Provide sample prompts as suggested starters.
221
00:07:54,520 --> 00:07:56,680
What's the renewal risk for Contoso?
222
00:07:56,680 --> 00:07:59,480
List open, save one incidents for North America.
223
00:07:59,480 --> 00:08:01,480
What's the API limit for plan pro?
224
00:08:01,480 --> 00:08:02,360
Let them break it.
225
00:08:02,360 --> 00:08:03,640
Watch activity map.
226
00:08:03,640 --> 00:08:04,680
Patch instructions.
227
00:08:04,680 --> 00:08:06,040
Titan scopes.
228
00:08:06,040 --> 00:08:07,320
Now you've got eyes.
229
00:08:07,320 --> 00:08:08,520
Inside policy.
230
00:08:08,520 --> 00:08:09,560
Inside audit.
231
00:08:09,560 --> 00:08:10,840
Studio did the heavy lifting.
232
00:08:10,840 --> 00:08:11,800
You drew the lines.
233
00:08:11,800 --> 00:08:13,000
The agent obeys.
234
00:08:13,000 --> 00:08:13,960
Pass two.
235
00:08:13,960 --> 00:08:15,560
Teams toolkit for VS code.
236
00:08:15,560 --> 00:08:17,560
Pro, dev, custom agents and plugins.
237
00:08:17,560 --> 00:08:18,520
Studio gave you eyes.
238
00:08:18,520 --> 00:08:20,120
Toolkit gives you surgical hands.
239
00:08:20,120 --> 00:08:20,920
Full control.
240
00:08:20,920 --> 00:08:22,120
No guardrails you didn't build.
241
00:08:22,120 --> 00:08:24,840
If studio is wiring, toolkit is the circuit board.
242
00:08:24,840 --> 00:08:25,880
Open VS code.
243
00:08:25,880 --> 00:08:27,160
Install teams toolkit.
244
00:08:27,160 --> 00:08:27,720
Quiet.
245
00:08:27,720 --> 00:08:28,600
No fanfare.
246
00:08:28,600 --> 00:08:30,360
Sign in with your tenant dev account.
247
00:08:30,360 --> 00:08:31,640
Not your prod identity.
248
00:08:31,640 --> 00:08:32,920
You already know why.
249
00:08:32,920 --> 00:08:34,200
Create a new project.
250
00:08:34,200 --> 00:08:35,800
Co-pilot plugin with API.
251
00:08:35,800 --> 00:08:38,040
This scaffolds a pro-dev agent capability
252
00:08:38,040 --> 00:08:39,400
for Microsoft 365.
253
00:08:39,400 --> 00:08:40,360
Co-pilot and teams.
254
00:08:40,360 --> 00:08:41,800
It's not the chat app trope.
255
00:08:41,800 --> 00:08:42,600
It's a skill.
256
00:08:42,600 --> 00:08:45,480
A tool with strict verbs, schemas and auth.
257
00:08:45,480 --> 00:08:47,400
The model calls your tool when your instructions
258
00:08:47,400 --> 00:08:48,600
and manifests say so.
259
00:08:48,600 --> 00:08:49,800
Precision over vibes.
260
00:08:49,800 --> 00:08:51,000
You'll see three anchors.
261
00:08:51,000 --> 00:08:51,720
The manifest.
262
00:08:51,720 --> 00:08:53,880
The open API, AI plug-in spec.
263
00:08:53,880 --> 00:08:54,680
The function code.
264
00:08:54,680 --> 00:08:56,280
The manifest declares your capability.
265
00:08:56,280 --> 00:08:57,720
The spec defines your contract.
266
00:08:57,720 --> 00:08:59,960
The function executes with your identity.
267
00:08:59,960 --> 00:09:01,560
Not the model's fantasy.
268
00:09:01,560 --> 00:09:03,160
Start with identity.
269
00:09:03,160 --> 00:09:05,000
Enter app registration.
270
00:09:05,000 --> 00:09:06,200
Least privilege.
271
00:09:06,200 --> 00:09:07,400
Create a new app.
272
00:09:07,400 --> 00:09:08,040
Name it.
273
00:09:08,040 --> 00:09:09,960
Agent sales force service now.
274
00:09:09,960 --> 00:09:10,920
API.
275
00:09:10,920 --> 00:09:13,640
Add two secrets if you must, but prefer certificate auth.
276
00:09:13,640 --> 00:09:16,120
Add application permissions to your internal API app ID
277
00:09:16,120 --> 00:09:18,280
or I. For sales force and service now,
278
00:09:18,280 --> 00:09:20,680
you'll use delegated auth or service principles.
279
00:09:20,680 --> 00:09:22,040
We have secure client credentials
280
00:09:22,040 --> 00:09:23,160
flow behind your function.
281
00:09:23,160 --> 00:09:25,080
Never expose raw secrets to the model.
282
00:09:25,080 --> 00:09:25,960
Never.
283
00:09:25,960 --> 00:09:27,800
Back to toolkit, environment files,
284
00:09:27,800 --> 00:09:30,120
and the dev reference as your key vault.
285
00:09:30,120 --> 00:09:31,320
Don't paste secrets.
286
00:09:31,320 --> 00:09:32,360
Point to secret ure.
287
00:09:32,360 --> 00:09:33,960
Use managed identity when you deploy
288
00:09:33,960 --> 00:09:35,880
to Azure Functions or Container Apps.
289
00:09:35,880 --> 00:09:38,840
Local dev can use developer CLI with federated credentials.
290
00:09:38,840 --> 00:09:39,880
No plain text.
291
00:09:39,880 --> 00:09:41,320
No excuses.
292
00:09:41,320 --> 00:09:43,320
Define the plug in spec.
293
00:09:43,320 --> 00:09:45,080
Open ap.adot.jamil.
294
00:09:45,080 --> 00:09:46,120
Keep it small.
295
00:09:46,120 --> 00:09:47,560
One path per verb.
296
00:09:47,560 --> 00:09:50,120
Salesforceopportunity.get
297
00:09:50,120 --> 00:09:52,440
Service now incident.get.
298
00:09:52,440 --> 00:09:54,040
Internal limits query.
299
00:09:54,040 --> 00:09:55,480
Document parameters.
300
00:09:55,480 --> 00:09:57,880
Account name, opportunity ID, incident number,
301
00:09:57,880 --> 00:09:59,720
product ID, customer tier,
302
00:09:59,720 --> 00:10:02,600
for each write crisp descriptions and constraints.
303
00:10:02,600 --> 00:10:03,640
Account name.
304
00:10:03,640 --> 00:10:05,160
Exact string match to account.
305
00:10:05,160 --> 00:10:05,800
Name.
306
00:10:05,800 --> 00:10:07,240
No wildcards.
307
00:10:07,240 --> 00:10:10,280
Incident number must match INC.paldi+
308
00:10:10,280 --> 00:10:11,800
Include response schemers.
309
00:10:11,800 --> 00:10:13,400
Never return raw records.
310
00:10:13,400 --> 00:10:15,000
Map to a minimal projection.
311
00:10:15,000 --> 00:10:17,480
ID name, status risk, next step link.
312
00:10:17,480 --> 00:10:18,760
The model understands shape and
313
00:10:18,760 --> 00:10:20,920
bigurity invites hallucination.
314
00:10:20,920 --> 00:10:22,120
Why are the handler?
315
00:10:22,120 --> 00:10:24,440
SRC functions opportunity.get.
316
00:10:24,440 --> 00:10:25,000
Tease.
317
00:10:25,000 --> 00:10:26,600
Use an HTTP trigger.
318
00:10:26,600 --> 00:10:28,120
Validate inputs first.
319
00:10:28,120 --> 00:10:29,800
Reject empty account name,
320
00:10:29,800 --> 00:10:32,600
normalize casing, log with correlation ID
321
00:10:32,600 --> 00:10:34,200
acquire token for Salesforce.
322
00:10:34,200 --> 00:10:36,920
Use on behalf of if the user is present in teams.
323
00:10:36,920 --> 00:10:38,840
Or use a service account with read only scope
324
00:10:38,840 --> 00:10:40,360
if this is a backend tool.
325
00:10:40,360 --> 00:10:42,360
Call Salesforce rest.
326
00:10:42,360 --> 00:10:45,080
Services data V59.
327
00:10:45,080 --> 00:10:46,920
Query, queue, select name,
328
00:10:46,920 --> 00:10:50,200
health score, DNC, ARR, GenC, renewal,
329
00:10:50,200 --> 00:10:53,240
risk, see, next step, LACE from
330
00:10:53,240 --> 00:10:55,160
opportunity, where account.
331
00:10:55,160 --> 00:10:56,520
Name, esode, account name,
332
00:10:56,520 --> 00:10:57,160
and is closed.
333
00:10:57,160 --> 00:10:59,640
It falls limit one time out at five seconds.
334
00:10:59,640 --> 00:11:00,600
Retrieves that.
335
00:11:00,600 --> 00:11:02,840
You want fast failure, not zombie weights.
336
00:11:02,840 --> 00:11:03,800
Transform the result.
337
00:11:03,800 --> 00:11:05,720
Map fields.
338
00:11:05,720 --> 00:11:07,640
Compute a simple risk label.
339
00:11:07,640 --> 00:11:09,560
High if health score, EOC.
340
00:11:09,560 --> 00:11:11,960
Four or renewal risks are also high,
341
00:11:11,960 --> 00:11:13,880
who include a deep link, HTTP.
342
00:11:13,880 --> 00:11:15,480
So slash your domain,
343
00:11:15,480 --> 00:11:17,320
lightning.force.com.
344
00:11:17,320 --> 00:11:18,280
Lightning.r.
345
00:11:18,280 --> 00:11:19,480
Opportunity.
346
00:11:19,480 --> 00:11:21,160
I'd view.
347
00:11:21,160 --> 00:11:22,760
Return JSON.
348
00:11:22,760 --> 00:11:24,200
Don't editorialize.
349
00:11:24,200 --> 00:11:25,400
Don't summarize.
350
00:11:25,400 --> 00:11:26,840
The model will handle language.
351
00:11:26,840 --> 00:11:28,040
You handle truth.
352
00:11:28,040 --> 00:11:29,240
Repeat for service now.
353
00:11:29,240 --> 00:11:30,520
Incident.get.ts.
354
00:11:30,520 --> 00:11:32,360
Validate incident number or fallback to
355
00:11:32,360 --> 00:11:34,280
account name search with limit three.
356
00:11:34,280 --> 00:11:38,040
If ambiguity, return choices with IDs and titles.
357
00:11:38,040 --> 00:11:40,120
Forced the model to ask the user to choose.
358
00:11:40,120 --> 00:11:41,160
No silent guesses.
359
00:11:41,160 --> 00:11:42,600
Query table API.
360
00:11:42,600 --> 00:11:44,520
API now table incident.
361
00:11:44,520 --> 00:11:45,160
Zeus palm.
362
00:11:45,160 --> 00:11:46,280
Galquery, push number.
363
00:11:46,280 --> 00:11:48,360
I and C as you 12345.
364
00:11:48,360 --> 00:11:49,080
CIS palm.
365
00:11:49,080 --> 00:11:49,800
Fields.
366
00:11:49,800 --> 00:11:50,920
Number priority.
367
00:11:50,920 --> 00:11:51,560
State.
368
00:11:51,560 --> 00:11:52,040
Short.
369
00:11:52,040 --> 00:11:52,760
Description.
370
00:11:52,760 --> 00:11:53,960
CIS updated on.
371
00:11:53,960 --> 00:11:54,440
CIS.
372
00:11:54,440 --> 00:11:55,240
Idtismap.
373
00:11:55,240 --> 00:11:57,160
State to a normalized enum.
374
00:11:57,160 --> 00:11:59,240
New in progress resolved.
375
00:11:59,240 --> 00:12:02,280
Derive SLL breach Boolean if needed from a second call.
376
00:12:02,280 --> 00:12:03,960
API now a table source task.
377
00:12:03,960 --> 00:12:05,400
Esla task.
378
00:12:05,400 --> 00:12:06,760
Keep it under two calls.
379
00:12:06,760 --> 00:12:08,680
Speed matters.
380
00:12:08,680 --> 00:12:10,840
Then the internal API.
381
00:12:10,840 --> 00:12:12,040
LimitSquery.ts.
382
00:12:12,040 --> 00:12:14,760
Acquired token for your API scope.
383
00:12:14,760 --> 00:12:18,040
Post limitSquery with product id and customer tier.
384
00:12:18,040 --> 00:12:21,240
Validate both against a local allow list cashed in config.
385
00:12:21,240 --> 00:12:22,840
Never let the model invent IDs.
386
00:12:22,840 --> 00:12:24,760
Return max users rate limit per minute.
387
00:12:24,760 --> 00:12:25,960
Notes linked to policy.
388
00:12:25,960 --> 00:12:28,280
If the API returns 404 propagated,
389
00:12:28,280 --> 00:12:31,400
the model should ask for a valid product that safe failure.
390
00:12:31,400 --> 00:12:32,360
Add policy.
391
00:12:32,360 --> 00:12:34,040
A thin guardrail middleware.
392
00:12:34,040 --> 00:12:37,080
If user context exists in force conditional access claims.
393
00:12:37,080 --> 00:12:40,600
If department alcohol sales and path starts with our sales force
394
00:12:40,600 --> 00:12:42,040
block with 403.
395
00:12:42,040 --> 00:12:46,760
If gosls.us and path exorcist CIS internal limits query and data
396
00:12:46,760 --> 00:12:50,120
residency is us only block return a clear short reason.
397
00:12:50,120 --> 00:12:51,720
The model can relay the denial.
398
00:12:51,720 --> 00:12:53,160
This is where governance meets code.
399
00:12:53,160 --> 00:12:54,200
They asked for control.
400
00:12:54,200 --> 00:12:55,560
You deliver it.
401
00:12:55,560 --> 00:12:56,840
Write unit tests.
402
00:12:56,840 --> 00:12:59,480
Just mock HTTP clients.
403
00:12:59,480 --> 00:13:00,760
Golden samples.
404
00:13:00,760 --> 00:13:02,040
One test per path.
405
00:13:02,040 --> 00:13:05,560
Success not found in valid input policy block timeout.
406
00:13:05,560 --> 00:13:07,000
CI runs them on every push.
407
00:13:07,000 --> 00:13:08,920
Toolkit integrates with GitHub actions.
408
00:13:08,920 --> 00:13:11,240
Add build, test, lint, deploy to dev.
409
00:13:11,240 --> 00:13:12,280
You're not doing theater.
410
00:13:12,280 --> 00:13:14,040
You're shipping controlled access.
411
00:13:14,040 --> 00:13:14,920
Local test.
412
00:13:14,920 --> 00:13:15,800
Teams toolkit.
413
00:13:15,800 --> 00:13:16,600
Preview in teams.
414
00:13:16,600 --> 00:13:17,240
Local.
415
00:13:17,240 --> 00:13:18,680
It spins up on Grog.
416
00:13:18,680 --> 00:13:19,880
Register your plugin.
417
00:13:19,880 --> 00:13:22,760
Open Microsoft 365 co-pilot in team sandbox.
418
00:13:22,760 --> 00:13:25,960
Ask what's Acquired's renewal risk and open incidents.
419
00:13:25,960 --> 00:13:27,000
The agent routes.
420
00:13:27,000 --> 00:13:28,520
It should call your opportunity get.
421
00:13:28,520 --> 00:13:31,320
Then incident get watch logs correlation it ties the chain.
422
00:13:31,320 --> 00:13:32,760
200 200.
423
00:13:32,760 --> 00:13:35,400
Response merges in the model layer with your JSON.
424
00:13:35,400 --> 00:13:37,080
It cites your tool by name.
425
00:13:37,080 --> 00:13:39,960
If it doesn't, fix the manifest actions descriptions.
426
00:13:39,960 --> 00:13:41,080
The model needs the hint,
427
00:13:41,080 --> 00:13:43,240
Perfcheck if latency crosses three seconds,
428
00:13:43,240 --> 00:13:43,960
trim fields.
429
00:13:43,960 --> 00:13:45,400
Cash allow lists in memory.
430
00:13:45,400 --> 00:13:47,960
Prefer HTTP to keep TLS warm.
431
00:13:47,960 --> 00:13:50,280
Move to Azure Functions premium or container apps with
432
00:13:50,280 --> 00:13:51,480
my instances.
433
00:13:51,480 --> 00:13:52,680
Code starts are death.
434
00:13:52,680 --> 00:13:54,840
Set Function Timeout to 10 seconds max.
435
00:13:54,840 --> 00:13:55,560
Fail fast.
436
00:13:55,560 --> 00:13:56,520
Explain fast.
437
00:13:56,520 --> 00:13:57,240
Deploy.
438
00:13:57,240 --> 00:13:59,080
Teams toolkit provision to Azure.
439
00:13:59,080 --> 00:14:00,840
Port slot with managed identity.
440
00:14:00,840 --> 00:14:01,720
Bind Key Vault.
441
00:14:01,720 --> 00:14:04,040
Register the plugin in Teams admin center.
442
00:14:04,040 --> 00:14:05,480
Scope it to a security group.
443
00:14:05,480 --> 00:14:06,760
Pilot group only.
444
00:14:06,760 --> 00:14:07,880
Add monitoring.
445
00:14:07,880 --> 00:14:09,240
Application insights.
446
00:14:09,240 --> 00:14:10,520
Custom dimensions.
447
00:14:10,520 --> 00:14:11,640
User ED hashed.
448
00:14:11,640 --> 00:14:12,280
Tool name.
449
00:14:12,280 --> 00:14:12,920
Status code.
450
00:14:12,920 --> 00:14:14,040
Miss build dashboards.
451
00:14:14,040 --> 00:14:15,640
You'll need them when leadership asks.
452
00:14:15,640 --> 00:14:16,760
Is it safe?
453
00:14:16,760 --> 00:14:18,360
You'll point numbers don't lie.
454
00:14:18,360 --> 00:14:20,200
Now pair it with your studio agent.
455
00:14:20,200 --> 00:14:21,880
Studio calls your plugin as a tool.
456
00:14:21,880 --> 00:14:22,760
You get best of both.
457
00:14:22,760 --> 00:14:24,040
The Clarity of Orchestration.
458
00:14:24,040 --> 00:14:25,000
ProDev Precision.
459
00:14:25,000 --> 00:14:25,880
Blindness removed.
460
00:14:25,880 --> 00:14:26,840
Access contained.
461
00:14:26,840 --> 00:14:27,800
Audited whisper it.
462
00:14:27,800 --> 00:14:28,440
Control.
463
00:14:28,440 --> 00:14:31,800
Head to head demo studio versus toolkit on the same use case.
464
00:14:31,800 --> 00:14:32,920
Same question.
465
00:14:32,920 --> 00:14:33,800
Two parts.
466
00:14:33,800 --> 00:14:35,560
Watch the divergence.
467
00:14:35,560 --> 00:14:37,080
Prompt in studio.
468
00:14:37,080 --> 00:14:39,800
What's AgMee's renewal risk and any open savvy one
469
00:14:39,800 --> 00:14:42,440
incidents also confirm API limits for product X
470
00:14:42,440 --> 00:14:43,320
Pro tier.
471
00:14:43,320 --> 00:14:44,760
The agent reads the instructions.
472
00:14:44,760 --> 00:14:47,240
Picks tools based on your orchestration rules.
473
00:14:47,240 --> 00:14:48,120
First call.
474
00:14:48,120 --> 00:14:48,760
Sales force.
475
00:14:48,760 --> 00:14:50,840
Inputs show in the activity map.
476
00:14:50,840 --> 00:14:51,560
Account name.
477
00:14:51,560 --> 00:14:52,600
AgMee.
478
00:14:52,600 --> 00:14:53,240
Fields.
479
00:14:53,240 --> 00:14:54,600
Health score time to see.
480
00:14:54,600 --> 00:14:55,800
AR RNC.
481
00:14:55,800 --> 00:14:57,240
Renewal risk.c.
482
00:14:57,240 --> 00:14:58,360
Next step.c.
483
00:14:58,360 --> 00:15:00,760
Read only scope 500 millisecond round trip.
484
00:15:00,760 --> 00:15:02,120
It returns a clean object.
485
00:15:02,120 --> 00:15:03,240
Studio labels it.
486
00:15:03,240 --> 00:15:04,840
Sites sales force.
487
00:15:04,840 --> 00:15:05,560
Second call.
488
00:15:05,560 --> 00:15:06,440
Service now.
489
00:15:06,440 --> 00:15:07,000
Account name.
490
00:15:07,000 --> 00:15:07,560
AgMee.
491
00:15:07,560 --> 00:15:08,360
Limit three.
492
00:15:08,360 --> 00:15:09,400
It finds two incidents.
493
00:15:09,400 --> 00:15:10,440
Ambiguity.
494
00:15:10,440 --> 00:15:12,200
Your rule forces a clarifying question.
495
00:15:12,200 --> 00:15:16,440
Did you mean INC 01245 or INC 01301?
496
00:15:16,440 --> 00:15:18,920
You pick INC 01301.
497
00:15:18,920 --> 00:15:19,560
Priority.
498
00:15:19,560 --> 00:15:20,120
One.
499
00:15:20,120 --> 00:15:20,600
State.
500
00:15:20,600 --> 00:15:21,400
In progress.
501
00:15:21,400 --> 00:15:22,360
SLA status.
502
00:15:22,360 --> 00:15:23,000
Breached.
503
00:15:23,000 --> 00:15:23,480
Studio.
504
00:15:23,480 --> 00:15:25,320
Brades the answer with both citations
505
00:15:25,320 --> 00:15:26,280
and direct links.
506
00:15:26,280 --> 00:15:27,240
No editorializing.
507
00:15:27,240 --> 00:15:28,200
Just what you told it.
508
00:15:28,200 --> 00:15:28,680
Third call.
509
00:15:28,680 --> 00:15:29,800
Internal API.
510
00:15:29,800 --> 00:15:30,440
Product ID.
511
00:15:30,440 --> 00:15:31,320
ProDxCustomer.
512
00:15:31,320 --> 00:15:32,040
ProDx.
513
00:15:32,040 --> 00:15:33,320
It returns max users.
514
00:15:33,320 --> 00:15:33,960
100.
515
00:15:33,960 --> 00:15:34,920
Rate limit per minute.
516
00:15:34,920 --> 00:15:35,800
600 nodes.
517
00:15:35,800 --> 00:15:36,600
Burst to 900.
518
00:15:36,600 --> 00:15:37,240
With approval.
519
00:15:37,240 --> 00:15:38,440
Policy link provided.
520
00:15:38,440 --> 00:15:39,720
Studio stitches it at the end.
521
00:15:39,720 --> 00:15:41,000
All three sources ranked.
522
00:15:41,000 --> 00:15:42,920
If any field was now it calls that out.
523
00:15:42,920 --> 00:15:44,600
You build that fail-loud behavior.
524
00:15:44,600 --> 00:15:45,560
It obeys.
525
00:15:45,560 --> 00:15:48,120
Latency total about two seconds with healthy backends.
526
00:15:48,120 --> 00:15:49,160
You never touched code.
527
00:15:49,160 --> 00:15:50,280
You defined verbs.
528
00:15:50,280 --> 00:15:51,320
Inputs outputs.
529
00:15:51,320 --> 00:15:51,880
Priority.
530
00:15:51,880 --> 00:15:53,240
The model handled language.
531
00:15:53,240 --> 00:15:54,760
Studio handled wiring.
532
00:15:54,760 --> 00:15:56,920
Identity stayed inside your tenant guardrails.
533
00:15:56,920 --> 00:15:58,520
Audit captured every call.
534
00:15:58,520 --> 00:16:00,200
Now the same request to Toolkit.
535
00:16:00,200 --> 00:16:02,600
You're in Teams co-pilot with your plug and registered.
536
00:16:02,600 --> 00:16:04,520
The model reads your manifest inspect.
537
00:16:04,520 --> 00:16:06,200
It decides your tools match the intent.
538
00:16:06,200 --> 00:16:07,240
It calls opportunity.
539
00:16:07,240 --> 00:16:08,120
Get with account name.
540
00:16:08,120 --> 00:16:08,760
Acme.
541
00:16:08,760 --> 00:16:10,200
Your function validates input.
542
00:16:10,200 --> 00:16:11,640
LogScorrelation ID.
543
00:16:11,640 --> 00:16:13,080
Gets it token.
544
00:16:13,080 --> 00:16:15,640
Runs the SOical query with a strict projection.
545
00:16:15,640 --> 00:16:16,200
Returns.
546
00:16:16,200 --> 00:16:16,600
Jason.
547
00:16:16,600 --> 00:16:17,080
A risk.
548
00:16:17,080 --> 00:16:17,480
High.
549
00:16:17,480 --> 00:16:18,360
Health score.
550
00:16:18,360 --> 00:16:19,320
36.
551
00:16:19,320 --> 00:16:20,040
AR.
552
00:16:20,040 --> 00:16:21,080
1.26.
553
00:16:21,080 --> 00:16:21,960
Next step.
554
00:16:21,960 --> 00:16:22,520
Exec.
555
00:16:22,520 --> 00:16:23,080
QBR.
556
00:16:23,080 --> 00:16:23,880
615.
557
00:16:23,880 --> 00:16:24,840
Link on.
558
00:16:24,840 --> 00:16:26,760
The model renders it in plain English.
559
00:16:26,760 --> 00:16:28,360
It cites your tool by name.
560
00:16:28,360 --> 00:16:30,040
Next, it calls incident get.
561
00:16:30,040 --> 00:16:32,520
You accept either incident number or account name.
562
00:16:32,520 --> 00:16:33,320
It got account name.
563
00:16:33,320 --> 00:16:35,880
You return two candidates because ambiguity is dangerous.
564
00:16:35,880 --> 00:16:37,480
The model asks the user to choose.
565
00:16:37,480 --> 00:16:38,600
You receive INC.
566
00:16:38,600 --> 00:16:39,720
0.013.
567
00:16:39,720 --> 00:16:40,120
0.1.
568
00:16:40,120 --> 00:16:41,000
You query.
569
00:16:41,000 --> 00:16:41,720
Map state.
570
00:16:41,720 --> 00:16:42,520
Compute breached.
571
00:16:42,520 --> 00:16:43,160
True.
572
00:16:43,160 --> 00:16:45,080
Return a normalized incident object.
573
00:16:45,080 --> 00:16:46,200
Again, the model narrates.
574
00:16:46,200 --> 00:16:47,320
It cites the tool.
575
00:16:47,320 --> 00:16:48,440
Then limits query.
576
00:16:48,440 --> 00:16:49,080
Product ID.
577
00:16:49,080 --> 00:16:49,400
Pro.
578
00:16:49,400 --> 00:16:49,880
X.
579
00:16:49,880 --> 00:16:50,600
Customer tier.
580
00:16:50,600 --> 00:16:51,240
Pro.
581
00:16:51,240 --> 00:16:53,480
Your handler checks both against an allow list.
582
00:16:53,480 --> 00:16:54,200
Valid.
583
00:16:54,200 --> 00:16:56,120
Your query an API scope token.
584
00:16:56,120 --> 00:16:56,760
Post.
585
00:16:56,760 --> 00:16:57,480
Transform.
586
00:16:57,480 --> 00:16:58,920
Return the minimal policy.
587
00:16:58,920 --> 00:16:59,720
Max users.
588
00:16:59,720 --> 00:17:00,680
Rate limit per minute.
589
00:17:00,680 --> 00:17:02,120
Burst policy policy link.
590
00:17:02,120 --> 00:17:03,320
The model presents it.
591
00:17:03,320 --> 00:17:04,520
One paragraph.
592
00:17:04,520 --> 00:17:05,800
Three citations.
593
00:17:05,800 --> 00:17:07,080
Consistent shape.
594
00:17:07,080 --> 00:17:08,040
What changed?
595
00:17:08,040 --> 00:17:09,240
Control.
596
00:17:09,240 --> 00:17:11,080
With studio you moved knobs.
597
00:17:11,080 --> 00:17:12,760
With toolkit you wired the board.
598
00:17:12,760 --> 00:17:14,360
You wrote the input validation.
599
00:17:14,360 --> 00:17:15,480
You chose the projection.
600
00:17:15,480 --> 00:17:16,920
You enforced policy in code.
601
00:17:16,920 --> 00:17:18,120
Performance is tighter.
602
00:17:18,120 --> 00:17:20,040
Error messages are yours not generic.
603
00:17:20,040 --> 00:17:21,480
You can add custom caching.
604
00:17:21,480 --> 00:17:22,760
Retrize circuit breakers.
605
00:17:22,760 --> 00:17:25,160
You can add per department deny rules in middleware.
606
00:17:25,160 --> 00:17:26,120
You own the latency.
607
00:17:26,120 --> 00:17:27,400
You own the blast radius.
608
00:17:27,400 --> 00:17:28,600
And here's the hinge.
609
00:17:28,600 --> 00:17:30,280
Studio and toolkit aren't rivals.
610
00:17:30,280 --> 00:17:32,520
Their layers let the studio agent orchestrate.
611
00:17:32,520 --> 00:17:34,360
Let your toolkit plug in execute.
612
00:17:34,360 --> 00:17:35,720
Studio roots the question.
613
00:17:35,720 --> 00:17:37,560
Toolkit tools deliver the truth.
614
00:17:37,560 --> 00:17:38,440
One brain.
615
00:17:38,440 --> 00:17:39,400
Many hands.
616
00:17:39,400 --> 00:17:40,840
Side with precision.
617
00:17:40,840 --> 00:17:43,240
Where most teams fail, they stop at studio.
618
00:17:43,240 --> 00:17:44,280
Or they stop at toolkit.
619
00:17:44,280 --> 00:17:45,240
They don't pair them.
620
00:17:45,240 --> 00:17:47,160
They accept blindness or accept chaos.
621
00:17:47,160 --> 00:17:47,720
Don't.
622
00:17:47,720 --> 00:17:50,200
Use studio for fast orchestration and governance.
623
00:17:50,200 --> 00:17:52,680
Use toolkit for hard edges, identity and shape.
624
00:17:52,680 --> 00:17:54,360
Together the model can't wander.
625
00:17:54,360 --> 00:17:56,360
It can only act where you've drawn the map.
626
00:17:56,360 --> 00:17:57,400
Ask the question again.
627
00:17:57,400 --> 00:17:58,360
The answers match.
628
00:17:58,360 --> 00:18:01,960
Same risk, same incident, same limits, two stacks, one outcome.
629
00:18:01,960 --> 00:18:02,680
That's not luck.
630
00:18:02,680 --> 00:18:03,560
That's design.
631
00:18:03,560 --> 00:18:05,560
Enterprise constraints you can't ignore.
632
00:18:05,560 --> 00:18:07,080
This is where your demo dies.
633
00:18:07,080 --> 00:18:07,800
Or lives.
634
00:18:07,800 --> 00:18:09,640
Because the enterprise doesn't care about clever.
635
00:18:09,640 --> 00:18:10,760
It cares about control.
636
00:18:10,760 --> 00:18:11,640
Licensing first.
637
00:18:11,640 --> 00:18:13,880
You need co-pilot for Microsoft 365
638
00:18:13,880 --> 00:18:16,120
for users to even see co-pilot inside teams.
639
00:18:16,120 --> 00:18:17,000
Word outlook.
640
00:18:17,000 --> 00:18:18,920
You need co-pilot studio licensing for agents
641
00:18:18,920 --> 00:18:19,960
and premium connectors.
642
00:18:19,960 --> 00:18:21,480
Execution uses credits.
643
00:18:21,480 --> 00:18:23,560
Salesforce and service now are premium.
644
00:18:23,560 --> 00:18:25,240
If your tenant doesn't have approvals,
645
00:18:25,240 --> 00:18:26,840
your calls will fail at runtime.
646
00:18:26,840 --> 00:18:27,720
Plan the licenses.
647
00:18:27,720 --> 00:18:30,200
Get admin approval for connectors before you press record.
648
00:18:30,200 --> 00:18:31,480
Admin approvals.
649
00:18:31,480 --> 00:18:32,200
Two gates.
650
00:18:32,200 --> 00:18:34,280
Entra ID for app permissions.
651
00:18:34,280 --> 00:18:36,040
Power platform for connector consent.
652
00:18:36,040 --> 00:18:38,360
Your Salesforce connector needs an OAuth app
653
00:18:38,360 --> 00:18:40,440
approved by the Salesforce admin.
654
00:18:40,440 --> 00:18:43,240
Your service now connector needs a per instance client.
655
00:18:43,240 --> 00:18:46,440
Your internal API needs an entra app with the right scopes.
656
00:18:46,440 --> 00:18:49,400
If you try to add a tool without tenant admin approval,
657
00:18:49,400 --> 00:18:51,080
studio hides it or blocks it.
658
00:18:51,080 --> 00:18:51,880
That's not a bug.
659
00:18:51,880 --> 00:18:54,040
That's boundary, tenant security and DLP.
660
00:18:54,040 --> 00:18:57,240
Many orgs block external connectors in default environments.
661
00:18:57,240 --> 00:18:58,680
If you build in the wrong environment,
662
00:18:58,680 --> 00:19:00,440
DLP will silently neuter your agent.
663
00:19:00,440 --> 00:19:03,240
Place the agent in an environment classified as business.
664
00:19:03,240 --> 00:19:05,320
Put your connectors in the same DLP data group.
665
00:19:05,320 --> 00:19:07,960
If marketing and finance can't mix data,
666
00:19:07,960 --> 00:19:10,200
you can't road answers across both.
667
00:19:10,200 --> 00:19:13,160
Respect the policy or you'll see action blocked by DLP.
668
00:19:13,160 --> 00:19:14,280
Not a mystery, a rule.
669
00:19:14,280 --> 00:19:16,120
Conditional access agents are just apps.
670
00:19:16,120 --> 00:19:17,800
CA policies apply.
671
00:19:17,800 --> 00:19:19,160
If your agent calls the plugin
672
00:19:19,160 --> 00:19:21,960
that hits Salesforce and the user is on an unmanaged device,
673
00:19:21,960 --> 00:19:23,880
your on behalf of Flow may be blocked.
674
00:19:23,880 --> 00:19:24,920
Design fallbacks.
675
00:19:24,920 --> 00:19:26,600
If CA denies OBO,
676
00:19:26,600 --> 00:19:28,280
have your function use a service account
677
00:19:28,280 --> 00:19:30,280
with read-only scope for non-sensitive reads
678
00:19:30,280 --> 00:19:31,560
or fail with a clear message.
679
00:19:31,560 --> 00:19:33,800
Access blocked by policy.
680
00:19:33,800 --> 00:19:35,160
Use a managed device.
681
00:19:35,160 --> 00:19:35,800
Don't leak.
682
00:19:35,800 --> 00:19:36,840
Don't bypass.
683
00:19:36,840 --> 00:19:37,960
Data residency.
684
00:19:37,960 --> 00:19:39,400
Where does grounding live?
685
00:19:39,400 --> 00:19:41,000
Studio stores agent configuration
686
00:19:41,000 --> 00:19:43,240
and knowledge indexing in your selected region.
687
00:19:43,240 --> 00:19:45,960
If your internal API serves US only data
688
00:19:45,960 --> 00:19:48,440
and your user is in EU, don't route it.
689
00:19:48,440 --> 00:19:50,760
Add geo checks in your toolkit middleware.
690
00:19:50,760 --> 00:19:51,960
Block if user geo.
691
00:19:51,960 --> 00:19:52,680
X allowed.
692
00:19:52,680 --> 00:19:54,040
Return a short denial reason.
693
00:19:54,040 --> 00:19:54,440
Log it.
694
00:19:54,440 --> 00:19:55,480
You'll need that for audit.
695
00:19:55,480 --> 00:19:56,760
Permissions boundaries.
696
00:19:56,760 --> 00:19:58,520
Least privileged by default.
697
00:19:58,520 --> 00:20:00,920
Your Salesforce scopes should be read only for accounts
698
00:20:00,920 --> 00:20:02,120
and opportunities.
699
00:20:02,120 --> 00:20:03,080
No wildcards.
700
00:20:03,080 --> 00:20:04,920
Your service now role should read incidents
701
00:20:04,920 --> 00:20:06,680
and if required task SLA.
702
00:20:06,680 --> 00:20:07,640
Don't add update.
703
00:20:07,640 --> 00:20:09,640
You will be asked to just fix a ticket.
704
00:20:09,640 --> 00:20:10,280
Don't.
705
00:20:10,280 --> 00:20:11,560
Keep action separate.
706
00:20:11,560 --> 00:20:13,160
Add right verbs only when governance
707
00:20:13,160 --> 00:20:14,520
and approvals exist.
708
00:20:14,520 --> 00:20:16,520
Otherwise one prompt turns into a record change
709
00:20:16,520 --> 00:20:17,640
with no change control.
710
00:20:17,640 --> 00:20:19,640
That's breach bait environments.
711
00:20:19,640 --> 00:20:20,680
Dev test.
712
00:20:20,680 --> 00:20:21,160
Prod.
713
00:20:21,160 --> 00:20:21,880
Don't skip them.
714
00:20:21,880 --> 00:20:25,080
Studio agents belong in a managed environment with ALM.
715
00:20:25,080 --> 00:20:26,120
Export import.
716
00:20:26,120 --> 00:20:27,320
Use solutions.
717
00:20:27,320 --> 00:20:29,160
Toolkit plugins deploy to dev subscription.
718
00:20:29,160 --> 00:20:29,880
Then test.
719
00:20:29,880 --> 00:20:30,680
Then prod.
720
00:20:30,680 --> 00:20:33,000
Use separate entra apps and key vaults per stage.
721
00:20:33,000 --> 00:20:34,680
Feature flags per environment.
722
00:20:34,680 --> 00:20:36,120
Turn on only what you need.
723
00:20:36,120 --> 00:20:37,640
Your future self will thank you.
724
00:20:37,640 --> 00:20:38,600
Logging and audit.
725
00:20:38,600 --> 00:20:40,840
Turn on application insights for toolkit.
726
00:20:40,840 --> 00:20:43,240
Inject correlation it from the model call into logs.
727
00:20:43,240 --> 00:20:44,680
Log input shape not PI.
728
00:20:44,680 --> 00:20:46,120
Log outbound domains.
729
00:20:46,120 --> 00:20:46,920
Status codes.
730
00:20:46,920 --> 00:20:47,720
Latency.
731
00:20:47,720 --> 00:20:50,600
For studio watch activity map and export analytics.
732
00:20:50,600 --> 00:20:52,360
You need a story when someone asks
733
00:20:52,360 --> 00:20:55,080
who saw what when without logs it's vibes.
734
00:20:55,080 --> 00:20:57,480
With logs it's truth monitoring and SLOs.
735
00:20:57,480 --> 00:20:58,520
Set alerts.
736
00:20:58,520 --> 00:21:02,280
If sales force tool errors 2% in 5 minutes page the owner.
737
00:21:02,280 --> 00:21:05,560
If latency crosses 3 seconds P95 degrade gracefully.
738
00:21:05,560 --> 00:21:06,360
Trim fields.
739
00:21:06,360 --> 00:21:08,440
Tell the user you're fetching a minimal view.
740
00:21:08,440 --> 00:21:09,160
Don't freeze.
741
00:21:09,160 --> 00:21:10,520
Don't pretend.
742
00:21:10,520 --> 00:21:11,400
Governance.
743
00:21:11,400 --> 00:21:12,360
Write the policy.
744
00:21:12,360 --> 00:21:13,800
PII masking.
745
00:21:13,800 --> 00:21:16,040
Mask emails to UCAD domain.
746
00:21:16,040 --> 00:21:17,400
Refuse exfiltration.
747
00:21:17,400 --> 00:21:19,880
Don't paste raw data to external channels.
748
00:21:19,880 --> 00:21:20,920
Read to your agent.
749
00:21:20,920 --> 00:21:22,440
Prompt it to bypass rules.
750
00:21:22,440 --> 00:21:24,600
If it tries, tighten instructions or middleware.
751
00:21:24,600 --> 00:21:25,640
You're not paranoid.
752
00:21:25,640 --> 00:21:27,000
You're prepared.
753
00:21:27,000 --> 00:21:28,280
One more constraint.
754
00:21:28,280 --> 00:21:28,920
Humans.
755
00:21:28,920 --> 00:21:29,960
Train your users.
756
00:21:29,960 --> 00:21:31,880
Suggested prompts aren't decoration.
757
00:21:31,880 --> 00:21:32,920
They're on ramps.
758
00:21:32,920 --> 00:21:34,440
Show them what the agent knows.
759
00:21:34,440 --> 00:21:35,320
What it refuses.
760
00:21:35,320 --> 00:21:36,040
What it logs.
761
00:21:36,040 --> 00:21:36,920
Set expectations.
762
00:21:36,920 --> 00:21:38,120
You reduce shadow prompts.
763
00:21:38,120 --> 00:21:39,160
You reduce risk.
764
00:21:39,160 --> 00:21:41,480
Ignore any of this and the system will ignore you.
765
00:21:41,480 --> 00:21:45,400
Respect it and your agent will survive first contact with the enterprise.
766
00:21:45,400 --> 00:21:48,440
Build along your first enterprise agent in co-pilot studio.
767
00:21:48,440 --> 00:21:49,480
Step by step.
768
00:21:49,480 --> 00:21:52,200
Open Microsoft 365 co-pilot.
769
00:21:52,200 --> 00:21:53,320
Create agent.
770
00:21:53,320 --> 00:21:54,920
Describe it bluntly.
771
00:21:54,920 --> 00:21:58,120
Internal agent for account health and incident status.
772
00:21:58,120 --> 00:21:58,760
Sources.
773
00:21:58,760 --> 00:21:59,560
Salesforce.
774
00:21:59,560 --> 00:22:01,400
Service now internal limits API.
775
00:22:01,400 --> 00:22:02,040
Site.
776
00:22:02,040 --> 00:22:03,320
Refuse when data is missing.
777
00:22:03,320 --> 00:22:04,120
No web.
778
00:22:04,120 --> 00:22:05,320
Send switch to configure.
779
00:22:05,320 --> 00:22:05,880
Name it.
780
00:22:05,880 --> 00:22:06,760
Set the icon.
781
00:22:06,760 --> 00:22:07,960
Now the handbook.
782
00:22:07,960 --> 00:22:09,880
In instructions paste clear rules.
783
00:22:09,880 --> 00:22:11,800
Only use approved knowledge and tools.
784
00:22:11,800 --> 00:22:12,760
Always site.
785
00:22:12,760 --> 00:22:15,000
Ask clarifying questions on ambiguity.
786
00:22:15,000 --> 00:22:16,040
Never guess.
787
00:22:16,040 --> 00:22:17,240
Mask PII.
788
00:22:17,240 --> 00:22:19,000
Refuse policy bypass.
789
00:22:19,000 --> 00:22:21,240
Knowledge at your SharePoint SOP library.
790
00:22:21,240 --> 00:22:22,920
Add your internal product FAQ.
791
00:22:22,920 --> 00:22:24,840
Rank SOP's first FAQ second.
792
00:22:24,840 --> 00:22:26,600
Turn web search of tools.
793
00:22:26,600 --> 00:22:28,120
Add salesforce connector.
794
00:22:28,120 --> 00:22:30,280
Authenticate within approved Entra app.
795
00:22:30,280 --> 00:22:31,800
Read only scopes.
796
00:22:31,800 --> 00:22:33,480
Inputs account name.
797
00:22:33,480 --> 00:22:33,960
Fields.
798
00:22:33,960 --> 00:22:34,440
Health score.
799
00:22:34,440 --> 00:22:35,000
Don't will see.
800
00:22:35,000 --> 00:22:35,960
R2 or C.
801
00:22:35,960 --> 00:22:37,320
Renewal risk go C.
802
00:22:37,320 --> 00:22:38,760
Next step R or C.
803
00:22:38,760 --> 00:22:39,640
Link.
804
00:22:39,640 --> 00:22:40,280
Usage.
805
00:22:40,280 --> 00:22:41,480
Renewal risk health.
806
00:22:41,480 --> 00:22:42,840
ARR owner.
807
00:22:42,840 --> 00:22:44,200
Add service now connector.
808
00:22:44,200 --> 00:22:45,800
O-auth to your instance.
809
00:22:45,800 --> 00:22:46,440
Rolls.
810
00:22:46,440 --> 00:22:47,240
Read incidents.
811
00:22:47,240 --> 00:22:49,080
Task Esla if needed.
812
00:22:49,080 --> 00:22:51,480
Inputs incident number or account name.
813
00:22:51,480 --> 00:22:55,160
If multiple results return top three and ask the user to choose.
814
00:22:55,160 --> 00:22:55,960
Outputs.
815
00:22:55,960 --> 00:22:56,920
Number priority.
816
00:22:56,920 --> 00:22:58,920
State SLS status updated on.
817
00:22:58,920 --> 00:22:59,480
Link.
818
00:22:59,480 --> 00:23:01,800
Add HTTP action for your internal API.
819
00:23:01,800 --> 00:23:03,480
Azure AD-auth.
820
00:23:03,480 --> 00:23:06,120
Post/Sash limits query.
821
00:23:06,120 --> 00:23:06,920
Inputs.
822
00:23:06,920 --> 00:23:07,960
Product ID.
823
00:23:07,960 --> 00:23:09,160
Customatier.
824
00:23:09,160 --> 00:23:10,760
Validate against an allow list.
825
00:23:10,760 --> 00:23:12,120
You maintain in config.
826
00:23:12,120 --> 00:23:12,920
Outputs.
827
00:23:12,920 --> 00:23:14,840
Max users rate limit per minute.
828
00:23:14,840 --> 00:23:16,200
Notes policy link.
829
00:23:16,200 --> 00:23:19,720
Usage product limits entitlements compliance caps.
830
00:23:19,720 --> 00:23:20,840
Orchestration.
831
00:23:20,840 --> 00:23:22,280
In tool priority rules.
832
00:23:22,280 --> 00:23:24,200
Renewal sales force.
833
00:23:24,200 --> 00:23:25,320
Ticket priority.
834
00:23:25,320 --> 00:23:26,280
SLA.
835
00:23:26,280 --> 00:23:27,320
Service now.
836
00:23:27,320 --> 00:23:28,680
Limit entitlement.
837
00:23:28,680 --> 00:23:30,120
Internal API.
838
00:23:30,120 --> 00:23:31,320
Set a confidence floor.
839
00:23:31,320 --> 00:23:32,920
If required fields are null.
840
00:23:32,920 --> 00:23:35,240
Ask a clarifying question before answering.
841
00:23:35,240 --> 00:23:36,600
Test in the right pane.
842
00:23:36,600 --> 00:23:39,000
Ask Agme Renewal risk and open incidents.
843
00:23:39,000 --> 00:23:40,600
Pro limits for product X.
844
00:23:40,600 --> 00:23:43,160
Verify activity map shows sales force first.
845
00:23:43,160 --> 00:23:45,720
Then service now with disambiguation if needed.
846
00:23:45,720 --> 00:23:46,920
Then internal API.
847
00:23:46,920 --> 00:23:48,280
Check citations and links.
848
00:23:48,280 --> 00:23:50,200
Fix any tool conditions that miss fire.
849
00:23:50,200 --> 00:23:50,840
Safety.
850
00:23:50,840 --> 00:23:52,040
Enable audit logging.
851
00:23:52,040 --> 00:23:54,280
Confirm connectors aren't blocked by DLP.
852
00:23:54,280 --> 00:23:55,480
Share to a pilot group.
853
00:23:55,480 --> 00:23:56,640
Seed suggested prompts.
854
00:23:56,640 --> 00:23:57,720
Let them break it.
855
00:23:57,720 --> 00:23:58,600
Patch instructions.
856
00:23:58,600 --> 00:23:59,440
Titanscopes.
857
00:23:59,440 --> 00:24:00,120
Publish.
858
00:24:00,120 --> 00:24:01,120
Decision framework.
859
00:24:01,120 --> 00:24:03,320
Went to choose Studio versus Toolkit.
860
00:24:03,320 --> 00:24:06,400
Choose Studio when you need speed, governance, and citations.
861
00:24:06,400 --> 00:24:09,200
Read only enterprise answers with simple actions.
862
00:24:09,200 --> 00:24:10,520
Makers can maintain it.
863
00:24:10,520 --> 00:24:12,000
Admins can approve it.
864
00:24:12,000 --> 00:24:14,960
Choose Toolkit when you need strict input validation.
865
00:24:14,960 --> 00:24:17,000
Custom schemas or complex logic.
866
00:24:17,000 --> 00:24:19,440
Conditional access aware policy in code.
867
00:24:19,440 --> 00:24:20,400
Low latency.
868
00:24:20,400 --> 00:24:21,840
High control integrations.
869
00:24:21,840 --> 00:24:22,760
Custom caching.
870
00:24:22,760 --> 00:24:23,600
Retrieves.
871
00:24:23,600 --> 00:24:24,640
Hybrid wins when.
872
00:24:24,640 --> 00:24:25,840
Studio orchestrates.
873
00:24:25,840 --> 00:24:27,240
Toolkit tools execute.
874
00:24:27,240 --> 00:24:29,440
You want fast iteration with pro-grade enforcement.
875
00:24:29,440 --> 00:24:32,160
You must prove auditability and minimize blast radius.
876
00:24:32,160 --> 00:24:34,120
If ambiguity default to Studio first
877
00:24:34,120 --> 00:24:37,800
at Toolkit where Studio bends, the truth copilot doesn't know.
878
00:24:37,800 --> 00:24:41,000
It fetches through paths you approve with identities you govern
879
00:24:41,000 --> 00:24:42,200
or it stays blind.
880
00:24:42,200 --> 00:24:43,000
Build the eyes.
881
00:24:43,000 --> 00:24:43,920
Own the site.
882
00:24:43,920 --> 00:24:46,400
If you want the ProDev plugin we used in the demo,
883
00:24:46,400 --> 00:24:49,880
watch the next video for the team's Toolkit build and deployment checklist.
884
00:24:49,880 --> 00:24:51,640
Subscribe for the enterprise patterns,
885
00:24:51,640 --> 00:24:53,720
red team prompts, and governance blueprints.