Large Language Models (LLMs) are celebrated for their ability to produce seemingly intelligent, well-reasoned responses on a wide range of topics. Increasingly, they can even browse the web autonomously and perform basic tasks independently.
However, these tools are highly generative by nature. While they sometimes deliver results in the desired format, this isn’t always the case. Similarly, they may autonomously complete tasks on occasion, but not consistently. Moreover, if you need data from a specific source—presented in a particular format that isn’t part of the LLM’s training corpus—you might find their capabilities lacking.
In such cases, programmatically retrieving data with defined inputs and outputs could be a more reliable solution. This is exactly where Actions in Copilot Studio come into play.
In Microsoft Copilot Studio, an Action is a reusable, customizable component that enhances an agent’s ability to perform specific tasks or respond to user queries. Actions are created using a low-code, graphical interface and can integrate with various systems, such as prebuilt connectors, Power Automate flows, or REST APIs. This allows agents to execute workflows, retrieve data, or deliver tailored responses efficiently.
In this post, we’ll explore how to build some basic Actions in Copilot Studio. To follow along, visit copilotstudio.microsoft.com and create a new agent. You can skip the configuration steps for now and navigate directly to the “Actions” section at the top. From there, click “Add an action” to begin creating your first Action.

Now, let’s look for an action to work with. There are plenty of choices here, each doing different things (think CRUD: some actions create records, others update or delete them, but for now, we’ll stick to read-only operations to get our footing).
Many of these are premium connections that need API keys or licenses, so we’ll look for one that’s fully open to the public. GitHub offers a few of those (which makes sense, given it’s owned by Microsoft).
So, search for GitHub and locate the action called “Lists all public repositories for an organization.” There are quite a few options, including a separate one for a user, so double-check to ensure you pick the correct one.

Next, we’ll configure how this action operates. I’ll set the end user authentication to rely on my access as the Copilot author, rather than the end user’s access, to avoid any discrepancies—though this shouldn’t be an issue here since GitHub is publicly accessible, but note that granting access to something a user wouldn’t otherwise have can have both advantages and drawbacks.

Next, let’s examine the inputs and outputs of this action. Copilot Studio will require one input—the repository owner—and deliver one output, called “Response,” which lists the repositories for that user. Understanding these inputs and outputs is crucial as we build more advanced agents.

Click “Add action” to incorporate this into our agent. A pop-up box should then appear, prompting you to “Go to Generative AI.” Go ahead and click it. If it doesn’t appear or you need to revisit it, navigate to Settings in the upper-right corner of your screen and select “Generative AI.”

Here, we’ll modify our agent’s setup to incorporate Generative AI for conversational interactions.
In Microsoft Copilot Studio, the traditional “Classic” agent operates using a structured approach where predefined topics are activated by specific user phrases, limiting responses to a rigid, preprogrammed framework.
In contrast, the Generative agent leverages advanced AI to dynamically interpret user queries and context, allowing it to intelligently select and combine topics, actions, and knowledge sources on the fly. This shift enables more organic, adaptable, and human-like conversations, as the agent can respond fluidly to a wider range of inputs without being constrained by exact phrasing or preset paths.

Save your agent, exit the Settings, and let’s put it to the test! You should see a sidebar for testing— if not, click the beaker icon labeled “Test” in the upper right to switch it on. Let’s chat here. I’m going to ask for the public GitHub repositories for Anaconda, the company that teamed up with Microsoft to integrate Python into Excel.
List the public GitHub repositories for Anaconda
We’ll observe in the Activity Map that this action is activated and delivers a response:

This is pretty cool, but the action itself is quite straightforward. It involves just one input variable and one output variable, leaving us with limited control over how the output is delivered. Plus, we didn’t need to stress about Copilot lacking the correct inputs or properly formatted data to execute the action.
So, let’s step it up and create a second action. I’ll head over to the Actions tab in Copilot Studio, remove our GitHub action, and set up a new one. Search for “Get current weather,” and you’ll find an MSN Weather action that, like before, doesn’t require user authentication (and, no shock here, is also a Microsoft product).
The first step I’ll take is to switch the end user authentication to Copilot user authentication:

This action is a bit more intricate, featuring two inputs and multiple outputs. The first input, location, isn’t too unexpected, but what about units? Is it really reasonable to expect the user to think of requesting weather conditions in a specific unit? To simplify things, we’ll go ahead and predefine that within the action itself.

Let’s modify a couple of things here. Under “How will the agent fill this input,” let’s change it to “Set as a value” instead of “Dynamically fill with best option.” This way, we’ll simply prefill this on the backend for the user.

Now we’ll explicitly select from the dropdown menu, choosing between Imperial or Metric. I’m American so I’m going with Imperial!

Next, let’s save and test the action. I’ll request the weather for Cleveland, OH, and the result will come back predefined in Imperial units:

These outputs might vary in format from one run to the next, though they’ll always be in Imperial units. Certain measurements, like wind gusts or visibility, may appear in some runs and not others.
If you’d like more control over what’s returned, you’ve got a couple of choices. One option is to remove some of the outputs from the action. There are 22 by default, so it’s a pretty long list to choose from! This would definitely reduce some of the unpredictability. Alternatively, for even greater precision, you could use the action within a topic, letting you capture and reuse parts of the user’s input and the agent’s output as variables. This approach is more exact and powerful, and we’ll cover it in a future post.
If you’re still wondering why we’d bother with an Action when it might seem like a regular LLM could handle the same thing, let’s break it down.
Actions in Copilot Studio aren’t just a fancy name for what an LLM already does. They bring something extra to the table. Unlike relying solely on a generative AI’s built-in knowledge, reasoning skills, or ability to search the web, Actions let developers create specific, step-by-step tasks that connect directly to external systems like APIs, databases, or business tools. This means you get exact, reliable results customized to what your organization needs.
To go back to our example of weather retrieval, an Action can pull that straight from a weather API, ensuring it’s fresh and accurate. A regular LLM, on the other hand, might guess based on old training data, misread your request, or grab outdated info from a web search.
LLMs are great at chatting and reasoning about general topics, but they don’t naturally “know” your company’s private data or the latest updates unless you connect them to the right sources. They might sound confident, but without that direct link, they could make assumptions that sound good but aren’t quite right. Actions solve this by acting like a bridge. They give the AI a way to “do” things, not just “talk” about them. You could use an Action to check inventory in a warehouse, process a payment, or fetch customer details from a CRM, all with precision that an LLM alone can’t guarantee.
What questions do you have about Actions or Copilot Studio more broadly? Let me know in the comments.
Leave a Reply