A Japanese Manga Character being supported by their Autopilot.

Are you planning for Microsoft’s (Copilot) Autopilot? My thoughts on how we can get ready


Introduction

For complete transparency, at the time of writing this article, I don’t have access to Microsoft Copilot’s latest feature, Autopilot [Introducing the new Copilot with Home, Code and Autopilot – The Official Microsoft Blog] or Copilot Studio’s Persistent Agents [Delegate shared business processes to agents that are more persistent and proactive | Microsoft Copilot Blog], which allow for AI Teammates. However, I know they are coming, and I have been thinking, “How can I prepare for it?”

So, this article is me sharing my thinking (and, to be honest, the thinking of my Copilot companion as well).

Before we go into that thinking we better explain what Copilot Autopilot.

What is Copilot Autopilot?

Well, Copilot writes that Autopilot moves Copilot from answering requests towards working proactively on a continuing objective. Microsoft describes it as a “persistent, proactive and personal agent that keeps working even when you’re not”.

Think of the difference like this:

  • Chat: you ask a question or request a draft.
  • Cowork: you delegate a task to be completed.
  • Autopilot: you give an agent an ongoing role and goal, with boundaries for its work. Microsoft’s announcement describes Chat and Cowork; reporting on Autopilot describes this role-and-goal model.

Reported examples include watching Microsoft Teams channels, following up on chat threads, running recurring work and resuming a project days later. The agent has its own identity, memory and workspace within your Microsoft 365 environment.

So Autopilot is Microsoft’s version of Grokbot, Dot, Muse and Openclaw. It is the evolution of Microsoft Scout but with one big difference in that it is running in the cloud.

I have the understanding that you can have multiple Autopilots which you name and assign yourself as their manager. This allows for autonomous AI capability which has a specific purpose or role.

One thing to point out is that they are part of the usage-based billing (UBB), so you are going to be paying as you go.

Anyway, the one use case that I am interested in is having an agent that understands me and can support me during my day, a digital twin.

So, what about Autopilot’s digital twin capability?

So, we can have an Autopilot that is a “digital twin” and acts and behaves how we would. Imagine having an agent that you automatically answers those low-risk questions and decisions and then routes the important, riskier or that require additional thought to you to respond too.

Honestly, I think it sounds amazing but also scary.

So, if I or we wanted to have such a capability, what would we need to do to make this happen? I guess this is where my thinking is. If I want to have such a thing, what do I need to do so that it understands me?

This does remind me of one of my favourite teen movies, Weird Science, where the characters, Wyatt and Gary, make a girl (Kelly LeBrock) with their computer, and they fill the computer with knowledge and images until they blow up their computer and house… classic!

Anyway, so, how do we fill our Autopilot with knowledge on us?

Well, we need to think about what makes us. This is probably a bit too much for this blog post, but it takes me back to my days with my business coach and the identity iceberg.

This is what I was thinking about when coming up with a set of information to support an autopilot acting as a digital twin. The idea is that your decisions, actions and behaviour are based on your skills, beliefs, values and ultimately your identity which is made up of these parts.

You can change and evolve but as you move further down the iceberg it becomes harder to do as they are based on lots of different aspects including your parents, environment, upbringing, values and beliefs. However, that being said, you can modify these things to allow you to change and get the results that you are looking to achieve. It’s a very powerful idea and very liberating if you are looking to achieve something that you might not be sure you can do…

So based on the identity iceberg and taking the ideas a bit further, we need to collate the following to build a picture of what makes us, us. So, we need to build out information in the following areas.

AreaWhat to make explicit
InformationAuthoritative sources, current commitments and outdated material.
ValuesPrinciples that should guide actions, especially when priorities conflict.
BeliefsWorking assumptions, supporting evidence and what would change your mind.
Decision-makingCriteria, trade-offs, acceptable risks and approval boundaries.
ThinkingExamples of decisions, the alternatives considered and why you chose them.

What can you do to get ready?

So, we have some areas which we need to delve into and provide to our Autopilot. This will generate our own personal Knowledge Base, which we can hook into our Autopilot.

As I mentioned earlier, we need to be able to have our Autopilot make decisions as to what it can and can’t handle. I believe that these choices should be part of that Decision-making area. Here we should add what we are happy for our Autopilot to decide on and where it should route the discussion to us. I would suggest that we have a whitelist of things to allow at the start.

Examples might be recommending iThink 365 products and services to colleagues. Approving expense receipts under £150 and approving holiday (however, really, we want to have a skill which we can provide to the Autopilot to detail the process of approving leave. For example, checking who else is off, whether they have got enough leave, and whether they are taking too much time etc.)

The decision-making process of what to include, how it will work, and how good it will be is interesting, and we will have to wait until Autopilot is launched before we can see.

However, either way, this personal knowledge base is going to be very powerful and generate this wealth of knowledge for our Autopilot.

How do we collect this information?

The next step and question are: how do we collate and pull all this information together?

Well, of course, I started a dialogue with Copilot on this.

I think the most obvious way would be by being interviewed and going through a series of questions on each of the areas mentioned earlier.

Ultimately, I can see a series of skills being built to form those questions. Maybe based on Matt Pocock’s Grill Me (Grillwith docs) skill. By using Copilot to ask the questions and record the answers, we can build up this corpus of knowledge.

I do have a list of questions which I have been working on; I am still working on these, but here are some to get you thinking. I will, as my confidence in the approach builds, share more of them.

Identity: Who is Simon?

Create a relatively stable Simon Profile that establishes role, responsibilities, expertise and personal context.

  • How would you describe yourself?
  • What is your role at iThink 365?
  • What responsibilities do you personally own?
  • What responsibilities do you delegate?
  • What are you accountable for as CEO?
  • What are the most important outcomes you are trying to achieve?
  • What areas are you genuinely expert in?
  • What areas do you know reasonably well?
  • What areas should the Copilot never pretend you are an expert in?
  • What companies, products, technologies and communities are important to you?
  • What does a good working week look like?
  • What personal priorities affect how you organise your time?

How Simon thinks

This is more valuable than biography alone. The twin needs to recognise the reasoning patterns behind decisions, not merely reproduce previous answers.

Decision-making questions

  • When you make a decision, what information do you want first?
  • Do you prefer evidence, experience, instinct or a combination?
  • What makes you sceptical about an idea?
  • What makes you enthusiastic about something?
  • What risks do you naturally worry about?
  • What risks are you comfortable accepting?
  • When do you want more evidence before committing?
  • When is “good enough” genuinely good enough?
  • What makes you change your mind?
  • How do you deal with conflicting evidence?
  • What would cause you to stop a project?

Scenario questions

A customer asks for something technically possible but commercially poor. What would you consider?

Microsoft technology could solve a problem, but a much simpler solution exists. Which way would you lean?

A proposal is 90% complete, but the deadline is tomorrow. Do you ship it or keep improving it?

A customer asks for an AI solution where you do not think AI is the answer. What do you do?

Scenario answers reveal trade-offs, thresholds and judgement. They are often more useful than a simple list of preferences.

How Simon communicates

Communication should be captured by context. An email, LinkedIn post, technical document and proposal should not all sound the same, even when they share the same underlying voice.

  • How should an email from you sound?
  • How should a LinkedIn post sound?
  • How should a technical document sound?
  • How should a proposal sound?
  • What phrases do you naturally use?
  • What phrases would you never use?
  • How formal and direct are you?
  • How do you disagree without sounding confrontational?
  • How do you give bad news?
  • How do you apologise?
  • How do you chase somebody who has not responded?
  • What makes you read something and immediately think, “That does not sound like me”?

Some of these questions are about capturing anti-patterns as well as preferred patterns. Knowing what Simon would never say is just as important as storing examples of what he would say.

How Simon works

This section I find interesting, as I do have a prescriptive way of working and a routine with a rhythm to it. I can see there will be a lot of value in having an Autopilot help me in all of this. Also, I can imagine that this might not be to everyone’s taste, and the list below is probably too Microsoft 365-focused for everyone’s tastes.

Daily operating rhythm

  • How do you start the working day?
  • What do you check first?
  • How do you prioritise email?
  • Which messages deserve an immediate response?
  • Which items become Planner tasks?
  • When does something belong in the calendar?
  • What do you tend to procrastinate on?
  • What should Copilot proactively remind you about?

Weekly and monthly rhythm

Capture recurring reviews for projects, customers, finances, invoicing, expenses, cash, sales pipeline, utilisation, marketing and business development.

If I disappeared for a week, what routine activities would someone have to perform to keep Simon’s world running?

Preferences and defaults

Small defaults materially affect trust and usefulness. They should be stored explicitly instead of rediscovered on every task.

  • UK English and product-name conventions
  • Preferred document structure, tone and level of detail
  • Use of tables, headings and formatting
  • Meeting preferences and working hours
  • Travel preferences
  • Preferred channel by scenario, such as Teams or email
  • Preferred suppliers, tools or products
  • Things that irritate you in documents or communications

As I mentioned, there are many more questions, but I am still working through them. The one thing that Copilot is great at, is coming up with questions!

However, for them to be useful, you have to be able to answer them! Sometimes those questions are too simplistic, or vague or too difficult to be able to give an answer that I would be useful.

Summary

In this article, I have shared my excitement about Microsoft Autopilot and how I think it will be helpful to us. However, I believe that for it to be useful, we need to give it a lot of information, and that will take energy and effort. Without that energy and effort, we will only get small gains, and for it to be truly transformational, we need to put effort into it.

So, in this article I have started to share my thinking about what is involved and needed and how we can prepare. At least then this will give you something to do whilst we wait for Autopilot to arrive!

It might be that I am completely wrong, and so if that is the case, well, sorry about that, but I would love to hear your thoughts and how you are preparing. What questions do you think we need to ask and answer for our digital twins?

I’ll continue to share my thoughts and approach, and hopefully we can work together to unlock the potential of Autopilot and digital twins. I guess time will tell.

A manga themed image with a coffee cup saying MCP dev and a blog post within a laptop title with the blog post.

My experiences Building Secure MCP Powered Microsoft Cowork Plugins


Introduction

This article discusses my experiences when building Microsoft 365 Copilot Cowork Plugins, which are powered by a secure custom MCP Server.

Why Cowork and Cowork Plugins?

Microsoft 365 Copilot Cowork is an evolution of Anthropic’s Claude Cowork. The tool is very versatile and enables the user to run multiple agent-based tasks at the same time. The backbone of Cowork is its skills framework which gives it the capabilities it needs. These skills allow it do things which can do, including creating and updating Microsoft Word, Excel, PowerPoint content, performing deep research, investigations, and more.

The difference between Copilot Cowork and Claude Cowork is that Copilot Cowork runs in the cloud and is always on, whereas Claude Cowork runs from your machine so is only on when your machine is on. 

I have to admit I have not used Claude Cowork, but my understanding is that Claude Cowork can also then drive your machine, which gives it an advantage in terms of Computer Use capabilities.

Cowork can access your Microsoft 365 data as Copilot can with hooks into your Email, Team discussions, SharePoint, Calendar entries and more.

These skills are great, and they allow you to define processes in detailed markdown files. These skills allow an organisation to define how to perform this work is done by Cowork. Up until Plugins, these skills were managed by each individual, and there was no way to share skills or have centralised skills.

This all changed with Cowork plugins, which allow you to deploy skills through a centralised mechanism.

However, all of this is great, but to really help you do more at work, Cowork needs to be able to access your business systems.

This is where Cowork Plugins come in, because as well as defining a skill, you can also tell them about your MCP servers. This enables you to provide a structured way for Cowork to access your business system. Through Cowork Plugins, you can provide a centrally managed set of Plugins which can then be added, updated, versioned and deployed to your teams.

Now we are talking!

Current state of Cowork Plugins

  • The current state of Cowork plugins is that they are in preview, and they are a bit rough around the edges. For example, the management of Cowork plugins isn’t quite there. So, for example, you can add them, but until recently, when Stephan Bisser discovered you could use the Integrated Apps page, there was no way to delete them.

Also, upgrading them is possible, but if you have automated the installation and deployment to a user or group of users, then this is broken now.

In this post, I am going to show you how to create a Cowork Plugin, how to build an MCP Server which is secured by Entra ID Authentication and how we can bring that MCP Server into the Cowork plugin, so that Cowork can make use of it.

How to access Cowork and Cowork Plugins

First, at the time of writing, Microsoft 365 Copilot Cowork is only available if your organisation has enabled Frontier access. You can find out how to do this by following this article:

Get Started with Frontier for IT Admins | Microsoft Frontier

Second, you can access your Plugins through Cowork, as shown below.

  • Fire up Cowork
  • Click on the + and then Manage plugins.
  • You will see a list of the Cowork plugins that have been made available to you.
  • Click on Browse plugins to allow you to install other plugins.

If you want to ensure that a plugin is available when you are kicking off a task in Cowork, make sure you have switched on the plugin.

How to build a Cowork Plugin

So, let’s get to building our Cowork plugin. In my example, we use a task and time management system called Toggl

Helping with everyone’s favourite job

One of the things that we all love doing is filing in your timesheets, don’t we?!

Well, how about if we could get Cowork to help us with this task?

We could ask it to look at our calendar and then automate the filling out of the user’s Toggl and fill out all the timesheets.

Something like this

Hopefully, the demo shows you the power of Cowork and these plugins. What is nice about it is that because you have the skill to describe how to do the task or tasks, these plugins can do more than one job, but you can guide them on how you want them to work.

For example, it is important that we allocate the right project and it is the right project for the right client. So I have asked Cowork to clarify anything that is unclear with or where there are duplicate project names.

Getting started

The following resources were used as a reference for building Cowork plugins; these are all found on Microsoft Learn.

https://learn.microsoft.com/en-us/microsoft-365/copilot/cowork/cowork-plugin-development

What do you need?

Well, you need an idea for your plugin. In our example, we are going to build a plugin to allow a user to fill out their timesheet.

So, to do this, we need the following:

  • A Toggl MCP Server that is secured by Entra ID
  • Entra ID Applications for your MCP Server and one for your MCP Client
  • Visual Studio Code
  • Ability to package up the Cowork Plugin.
  • Configuration within Teams Dev Portal.

Let’s get started.

MCP Server Secured by Entra ID

So first, we need an MCP Server that is secured by Entra ID. I have written a blog post called “Building a secure MCP Server with Entra ID”, which contains a template to create your MCP Server from.

You can find this blog post here

Building a Secure Custom MCP Server secured by Microsoft Entra ID | Doy’s Microsoft 365 and Azure Dev Blog

Once you have downloaded and set up your secure MCP Server secured by Entra ID, then you can start building out your plugin and skill.

Building your Copilot Cowork Plugin

So, I will be honest, I have been using GitHub Copilot a lot, and generally these days I get GitHub Copilot to scaffold out the plugin and help me write the skill. I will share with you via my GitHub repo the skill that I have for Toggl, so you can see what I have.

Cowork Plugins follow a similar pattern to other Microsoft 365 Apps. This approach Is used by Microsoft Teams Apps, Declarative Agents, etc., in that they are a zip file which contains a manifest, a set of icons and then the resources for the Cowork plugin.

The Microsoft Learn Article, Build Cowork Plugins, has all the details, so you can read this, but I will talk about the key points and the gotchas that I went through.

https://learn.microsoft.com/en-us/microsoft-365/copilot/cowork/cowork-plugin-development

The plugin file structure is something like this (this is taken from the Microsoft Learn article)

my-extension.zip

In the article, there is a section which shows you how to build a plugin from scratch

https://learn.microsoft.com/en-us/microsoft-365/copilot/cowork/cowork-plugin-development#build-a-plugin-from-scratch

To get going, I opened Visual Studio Code.

  • I created a folder for each plugin that I was building, and then created a subfolder called skills and then a subfolder within skills with the name of my plugin.
  • Then I added a SKILL.md file which details my skills.
  • I then asked GitHub Copilot

It scaffolded the rest of the structure and created a reusable PowerShell script, which will then package up the plugins into individual zip files.

I have made this all available on GitHub, so take a look. You will be able to access the final result here (minus a couple of URLs).

https://github.com/SimonDoy/microsoft365-dev-samples/tree/main/cowork-toggl-plugin-example

So I would suggest that you clone this repo and use it to get started.

Once you have cloned the repo and downloaded your plugin, you will need to update it for your needs. This is handled by two key files: the manifest.json and the SKILL.md file.

Let’s start with the manifest.json and talk through this.

Firstly, we need to fill out the version number, update the ID and packageName to your specific organisation.

Next, we need to give it a good name and description.

As we get down to the bottom, this is where the exciting stuff lives. There is a section called agentSkills.

Here is where we point to our folder with our SKILL.md file.

Next is the really exciting bit. The agentConnectors section.

Here we provide an id for our connector, a name and a description of what the connector can do.

Finally, we provide the URL to our MCP Server, which includes the MCP endpoint.

Underneath, we provide authorisation information. Now, when I first read this, I thought the reference ID was just maybe the MCP Client ID we created when we created our secure MCP Server. Please see my blog article on writing a Secure MCP Server to understand what I am saying here.

These Cowork Plugins can support Anonymous Authentication, API Tokens (not tried) and OAuth or Open authentication.

However, this is something completely different and requires you to set up an asset via the Microsoft Teams Developer Portal.

What to do to Get your OAuthPluginVault ReferenceId?

So, to get a reference ID for your plugin, what do you need to do?

Well, you’ll need to go to the Microsoft Teams Developer Portal

https://dev.teams.microsoft.com

  • Click on Tools.
  • Click on Microsoft Entra SSO Client ID registration
  • From here, click on New client registration

Once you have filled this all out, save your entry, and you will get a screen that displays your registration ID.

You need to update your plugins manifest.json and set the reference ID to this value.

You will also need to go and add this Application ID URI to your MCP Server’s list of Application ID URIs.

This is achieved by editing your manifest file from within the Microsoft Entra ID, App Registrations

  • Browse to https://entra.microsoft.com
  • Click on App registrations under the Entra ID heading
  • Find your MCP Server Entra ID application
  • Choose Manifest and find the identifierUris array JSON.
  • Add the specified URI to the bottom of the array.
  • Save your settings.

And ensure that the Microsoft Enterprise Token Store App is able to call our MCP Server app.

  • Add ab3be6b7-f5df-413d-ac2d-abf1e3fd9c0b

Now, one thing at the time of writing, we need to have our Entra ID applications configured as multi-tenant. I ended up having to set the identifier URIs to be either a valid domain that has been validated against the Microsoft 365 tenant or use the api://[clientid] naming convention.

Once this is done, then you can switch your app reg to multi-tenant and secure it against just your tenant by doing the following:

  • From your App Registration screen in Microsoft Entra ID
  • Click on Authentication, choose Supported accounts
  • Change to Multiple Entra ID tenants.
  • Choose just your tenant id.
  • Click Save

Next, we need to switch focus to our MCP Client that we are using to connect to our MCP Server.

We also need to ensure that the MCP Client is set up for Multiple Entra ID Tenants.

We also need to add a redirect URL for Web Authentication.

This allows the token to be retrieved and stored in the Microsoft Enterprise Token store (probably).

Package your plugin

Now you can save everything and package up your plugin.

  • Check your manifest, check your icons. Make sure you color.png is 192x192px in size and your outline is 32px by 32px.
  • From a terminal run
    • ./package-cowork-plugins.ps1 -PluginsPath “projects”
  • This will create a folder called dist and a zip file with the name of the subfolder time-tracking-toggl.zip.

This zip file is your plugin.

Install the Plugin

To install the plugin, we need to go to the Microsoft 365 Admin Centre or (MAC).

  • Choose the … at the top of the list of agents
  • Choose Add agent
  • Upload your file and click Next
  • Choose who can see your Plugin.
  • Be careful about auto-deploying the plugin, as I have had issues then upgrading a plugin that has been deployed.
  • Follow the wizard until you have successfully installed the Plugin.

You should see a successful screen, but then if you browse the list of agents, you cannot see your plugin anymore. This is just how it is at this time.

  • Now, Stephan Bisser pointed out that you can view your plugins by clicking on Settings->Integrated Apps

Now I can search from the Available Apps tab.

Enabling your Copilot Cowork Plugin.

Now you are ready to enable your Cowork Plugin.

  • Click on the +
  • Choose Manage plugins
  • Choose Browse plugins
  • From Discover, find your Plugin
  • Click on the Plugin you want to add.
  • Click Add
  • Because this plugin requires authentication, you will need to connect it by clicking on Connect below.

Now, here you will find out if you have set up everything correctly.

If you click on Connect and nothing happens, then check your configuration on the Development Teams Portal.

Right, we should be ready to try it out.

Try out your Cowork plugin

So, let’s try it out. In the following video, you can see what happens.

  • You need to enable your plugin before you kick off the prompt.
  • Now I type out this prompt.

“Please add today’s work tasks from my calendar into Toggl”

Cowork will kick off and connect to the Calendar, and look at the appointments. It then connects to the Toggl MCP Server and tries to resolve the tasks in the calendar to projects and entries in my calendar.

It will air on the side of caution and not add projects to the tasks that it is not sure of.

After a few seconds, the Toggl timesheet has been completed based on the tasks from today.

Cowork Plugin Upgrade Gotchas

Before I wrap up this post, there are a couple of gotchas that I want to mention.

  1. Upgrading the Plugin does not work if you have deployed the plugin to any users. You get an error saying that you have already deployed this version of the plugin.
  2. Make sure when upgrading the plugin, you update the version number in the manifest and the SKILL.md file.
  3. I have seen upgrades silently fail when the color.png icon is not 192px by 192px. The upgrade package is updated, but then nothing happens.
  4. Upgrades to Cowork plugins seem pretty quick, normally within a few minutes.

Conclusion

In this post, we showed you how to create a Cowork plugin with a skill and consume an MCP Server that is secured by Entra ID. We covered the steps needed to set it up correctly, and I hope you try it out with your own MCP server implementations.

There are a few things to say about Microsoft Cowork. We are not sure what the licensing will be, and it is still in public preview, so take the chance to try it out and see how you get on.

As it is still in preview, it’s still a bit rough around the edges, but updates and improvements are happening all the time. As you can see from the demo, it is a really powerful tool, and I am excited to see what people build with it.

Let me know how you get on and what your thoughts are on how you would use it.