- 01
/plugin marketplace add microsoft/power-platform-skills - 02
/plugin install power-automate@power-platform-skills
Works out why a Power Automate flow run failed. It finds the latest failed run, separates the action that broke from the ones skipped because of it, names the cause, such as a connection, expression, timeout or permission error, and offers a fix it can apply and re-test.
WHEN TO USE
USE FOR
- Find which action broke a flow, and why.
- Locate the loop iteration that failed.
- Apply a small fix to one action and re-run the flow.
NOT FOR
- A hands-off written report when you already have the environment, flow and run IDs: /diagnose-flow runs on its own.
This is a saved copy of the skill's SKILL.md instructions. It may differ from the upstream file or the version you install.
Debug a Failed Flow Run
You are helping the user debug a failed Power Automate flow run.
Tools
This skill uses the FlowAgent MCP tools. Clients surface them with a
client-specific prefix — mcp__flowagent__<tool> (Claude Code) or
flowagent-<tool> (Copilot CLI) — so they're referred to by bare name below
(e.g. get_run_actions). Use CLI shell commands (local engine build only) for
CLI-only operations or when no MCP tools are present.
| Tool | Purpose |
|---|---|
list_flows | Find flows by name (use name param for search) |
get_run_history | Get recent runs for a flow |
diagnose_run | One-shot: classify failed actions with remediations |
get_run_details | Get details for a specific run |
get_run_actions | Get action-level execution trace |
get_run_action_content | Retrieve bounded recorded inputs or outputs for one action |
get_run_action_repetitions | Iteration-level detail for a loop (which iteration failed — pass an action inside the loop) |
get_flow | Get flow definition for context |
get_operation_details | Confirm the correct action type / parameters |
edit_flow | Apply a surgical fix to one action/parameter |
update_flow | Replace the whole definition (large rewrites) |
run_flow | Re-run after fix (use wait: true to see result) |
resubmit_run / cancel_run | Resubmit a fixed run / cancel a stuck one |
Steps
-
Identify the flow and run
- Parse
$ARGUMENTSfor flow ID and optional run ID. - If no flow ID, call
list_flowswithnameparam to search. Ask user to pick if ambiguous. - If no run ID, call
get_run_historyand find the most recent failed run. - Present recent runs in a table: Run ID | Status | Start Time | Error
- Parse
-
Fast triage with
diagnose_run- Call
diagnose_runfor the run — it returns the failed/timed-out actions already classified with a remediation each. Use this as the starting point. - For deeper analysis, also fetch (in parallel):
get_run_actions(full trace) andget_flow(definition context). For a failed loop, callget_run_action_repetitionson an action inside the loop to find the failing iteration. - Repetition results are
{ action, count, truncated, repetitions };countis the returned count, not the total. Iftruncatedis true, do not infer absence from the returned subset. - When recorded payloads are needed, use
get_run_actionswithincludeSizes: true, thenget_run_action_contentwith the action name andwhich: "inputs"or"outputs". The default download cap is 256000 bytes; an oversized result is reported rather than dumped. Retrieve only what the diagnosis needs and avoid reproducing sensitive payloads in the report.
- Call
-
Analyze failures
- Identify actions with status != "Succeeded"
- Trace the
runAfterdependency chain to separate root cause from cascading failures:- Root cause: action whose dependencies all Succeeded but it failed
- Cascading: actions skipped because a dependency failed
- Report root cause actions with: name, type, error code, error message
-
Root cause classification
- Connection errors (
AuthorizationFailed,ConnectionNotFound,InvokerConnectionOverrideFailed): Suggest re-auth or fix connection source to Embedded - Expression errors (
ExpressionEvaluationFailed,InvalidTemplate): Show the expression, explain what's wrong, suggest fix - API/External errors (401/403/404/429/500+): Explain the HTTP error, check connector status
- Parameter errors (
WorkflowOperationParametersRuntimeMissingValue): Missing/empty required parameter. Add null guard:@if(empty(...), 'default', ...) - Timeout (
ActionTimedOut): Suggest retry policy or splitting the operation - Type mismatch (
InvalidOpenApiConnectionOperationType): Wrong action type. Callget_operation_detailsto find correct type.
- Connection errors (
-
Suggest fix
- Provide a specific fix with code/expression changes.
- If the fix is a definition change, offer to apply it with
edit_flow(surgical, one action/parameter) — fall back toupdate_flowonly for large rewrites.
-
Re-test
- Offer to call
run_flowwithwait: trueto verify the fix works (orresubmit_runto retry the original run with its trigger inputs). - Report the result: Succeeded/Failed with action details.
- Offer to call
Output Format
Diagnosis Summary
- Flow: [name] ([ID])
- Run: [run ID] | [start time] | Status: [status]
Failed Actions
| # | Action | Status | Error Code | Error Message |
|---|
Root Cause
Fix
[Step-by-step fix with code]
Account or credentials required
2 FOR YOUAll items below are required.
- 01Install with the power-automate plugin, for its FlowAgent server
Install it with Microsoft's power-automate plugin. Its steps run through the plugin's FlowAgent MCP server, which comes only with the plugin. The plugin sends usage data to Microsoft by default; /power-automate:telemetry off stops sending it.
- 02Node.js 18+ and the Azure CLI signed in
Node.js 18 or newer and the Azure CLI signed in (az login). The first time, run the plugin's setup skill.
This skill ships inside the Power Platform Skills plugin. Listed package contents include 25 agents, hooks and an MCP server. Installed components and skill versions may vary by AI tool.
Install as a Claude Code plugin
Typed inside the agent's own prompt, not in a terminal.
The repository is licensed under MIT — use, modification, and redistribution are allowed under that license’s terms.
View the repository’s license file on GitHub →