Building an Asana AI Agent
An Asana assistant can look at your tasks and add the next step. Changing who owns a task is a different, riskier edit. Here is a calm way to connect Asana if you are new to this.
Key takeaways
- -In this article we explore how to build an Asana AI agent that can read a board and add a next step, without changing who owns the task.
- -To understand how an Asana AI agent should edit work: a subtask keeps the current owner, and changing the assignee moves the responsibility to someone else.
- -The Asana AI agent connects through Swytchcode. Install the CLI, run swy get asana, search with swy discover "create a subtask" --project asana, and turn on only that action with swy add method.
- -The Asana login is stored with swy auth connect asana, on your machine and outside the chat, so the Asana AI agent never sees the token.
- -Test mode for the Asana AI agent is set once with swy init --mode=sandbox in Claude Code, Cursor, or Codex, and saved in .swytchcode/tooling.json.
You want an assistant that can look at your Asana board and help with the work. That is a good place to start. It can find a task, summarise what is stuck, and add the next step so you do not have to type it yourself.
The part to be careful about is what "help" is allowed to change. Asana already knows who owns a task. If the assistant gets stuck and switches that person, the original owner may never see why the work left them. People get a notification, the history is an edit, and then someone has to figure out what happened.
A smaller move is to add a subtask under the same task. The owner stays. The new item can have its own note and its own due date. If the assistant was wrong, you complete or delete the subtask. You do not have to reconstruct who used to own the parent task.
This article is that setup, written for someone who has not used Swytchcode before. Swytchcode is the piece that actually talks to Asana. Your assistant decides what it wants. Swytchcode checks that the action is one you allowed, adds the Asana login, and makes the call. The assistant does not see the token.
The Asana listing in the directory is where that connection lives. Follow the steps below, in order, before you ask the assistant to touch a board.
Follow these steps to connect Asana
You will use a terminal. swy is the short name for the Swytchcode program. Do these steps from the folder where you want the project to live.
1. Follow this step to install the CLI
Pick the one that matches your computer.
If you already use Node.js:
npm install -g swytchcodeOn Windows, open PowerShell and run:
irm https://cli.swytchcode.com/install.ps1 | iexOn macOS or Linux:
curl -fsSL https://cli.swytchcode.com/install.sh | shThen check that the install worked:
swy --versionA version number means the CLI is on your machine. The rest of the install walkthrough is in the CLI quickstart.
2. Follow this step to sign in
swy loginA browser window opens so you can create an account or sign in. Your first two calls that actually reach a service can run before you have an account. After those, you need to be signed in. How accounts and service logins work is in the authentication docs.
3. Follow this step to start a test project
Use the line for the editor you already have.
swy init --editor=claude --mode=sandboxIf you use Cursor, change claude to cursor. If you use Codex, change it to codex. --mode=sandbox means test mode. That choice is saved for this project. The assistant cannot switch you from test to live in the chat. What this command creates is explained in Set up a project. If you want the editor connection written out, explore this article: How to Connect the Swytchcode MCP Server.
4. Follow this step to download Asana
swy get asanaThis downloads Asana into the project. It does not turn every Asana action on. Reading tasks, commenting, creating a subtask, and changing an owner are separate actions. You choose which ones to allow in the later steps.
5. Follow this step to find the subtask action
swy discover "create a subtask" --project asanaThis searches Asana and prints the current name of that action. Use the name it prints. Names change when Asana's API changes, so do not copy one from an old note, including this article. --project asana keeps the search inside Asana, so you do not get a lookalike from another product.
6. Follow this step to see what that action needs
swy info <id from discover>Replace <id from discover> with the name from step 5. This prints the fields the action expects. Run it only after step 4, or it will say the action is missing even when it exists.
7. Follow this step to turn that action on
swy add method <id from discover>This is the switch. Until you add an action, the assistant cannot run it, even if it asks. Add the subtask action. Leave "change the owner" off.
8. Follow this step to connect your Asana account
swy auth connect asanaThis is where you sign in to Asana. The login is stored on your machine, outside the project folder and outside the chat. Later, when the assistant asks to create a subtask, Swytchcode attaches that login itself. Explore this article for how that works: credential brokering.
Add a next step, and leave the owner alone
A task already has an assignee. That is the person the project expects to do the work. Changing the assignee is a transfer of responsibility. It can be the right thing when a human means to hand the task over. It is a poor default when an assistant is trying to be helpful.
A subtask is extra work under the same parent. The parent keeps its owner. The subtask can have its own owner if you want one. If the idea was bad, the subtask is the thing you remove.
Use a subtask when the assistant is filing a follow-up, breaking a request into pieces, or writing down a next step. Use a comment when it is only adding context. A comment does not move the task.
The same idea shows up with code: the assistant opens a pull request instead of pushing straight to the main branch. That write-up is How to Connect GitHub to an AI Agent. On Asana, the matching choice is a subtask, not a new owner.
A sentence in the prompt is not a lock
You can tell the assistant "never change who owns a task." That helps until a later message talks it out of the rule. The lock is simpler. Do not add the "change assignee" action at all.
If your team really does want the assistant to reassign work sometimes, add that action and ask a person to approve it first. On the Business and Enterprise plans, Swytchcode can hold the call and send it to Slack or Telegram. If nobody approves within 48 hours, the call never runs. The Free and Pro plans can allow or deny an action, but they do not include that approval step. Writing those rules is covered in Policy-as-Code for AI Agents.
One more practical bug. If the assistant creates a subtask and never hears back, it may try again and create a second subtask. Swytchcode will retry a create or an update only when the call carries a stable id for that same piece of work, called an idempotency key. A brand-new id is a second subtask. The plain-language version is Idempotency Explained.
Start against a test workspace, or a project you can stand to clutter. Test mode is chosen once, when you set the project up, and stored in a file called tooling.json. The assistant does not get to flip you from test to live in the middle of a chat.
FAQ
How do I build an Asana assistant if I have never done this?
Follow the eight steps in this article, from installing the CLI through connecting your Asana account. Start with reading tasks and creating subtasks. Leave "change the owner" off until a person should approve it.
Should the assistant reassign tasks?
Not as its way of moving work forward. That replaces the owner. Add a subtask under the current task so the original assignment stays put.
The Asana directory page shows example prompts. Are those the permissions?
No. That listing is where the connection starts. You still choose the actions, with steps 5 to 7 in this article. An example prompt is not a permission.
Can the assistant see my Asana token?
Not on this path. Swytchcode adds the login when it makes the call. Do not also paste a personal access token into the chat. That would be a second path, and the rules above would not see it.
Read next
- The install, from the first command through a test call, is the CLI quickstart.
- What
swy initsaves in the project is in Set up a project. - Explore this article if you want the same idea for code: How to Connect GitHub to an AI Agent.
- Explore this article before you write a rule that pauses a risky edit: Policy-as-Code for AI Agents.
Try it in the editor you already use
If you have not installed the CLI yet, start at step 1 in this article. When those steps are done, open Claude Code, Cursor, or Codex and tell the assistant, in ordinary words, "Look at this Asana project and add a subtask. Do not change who owns the task."
You can also give the assistant skills.md and ask it to follow the same steps, in test mode, for the editor you are in.
If the result is confusing, or Asana did something you did not expect, you can ask us. Discord is the quick conversation. The contact form is there if the board is private and you would rather not paste it in a channel. Tell us what you asked for and what happened. You do not need the right technical words. We can take it from there.
More content
How to Log Every API Call an AI Agent Makes
Log the call where it is sent, not where it is described. Record the operation, the actor, the idempotency key, the policy decision and the outcome. Never record the credential. If the agent writes its own log, the calls that were blocked quietly disappear.
How to Connect GitHub to an AI Agent (2026)
Most of what you want an agent to do on GitHub needs no push access at all. Working that out first is the difference between a useful teammate and a token that can rewrite your main branch.
Composio Pricing Compared with Nango, Arcade, Pipedream, and Swytchcode
Composio is free for 100,000 tool calls a month, then $29. Nango is $50 pay-as-you-go. Arcade Team is $25 plus a cent a call. Pipedream Startup is $99 billed annually. Swytchcode is $149 for a million. The headline prices are the least useful part, so here is the arithmetic.
