Terraform Cloud List Runs List and filter runs from Terraform Cloud workspaces with formatted output. When to Use This Skill | Use this skill when... | Use a sibling instead when... | |---|---| | Listing recent runs for an arbitrary TFC workspace by ID | Inspecting a single known run ID for status ( ) | | Filtering runs by status, operation, or source across an org | Reading plan/apply log content for a run ( ) | | Searching runs by commit SHA or VCS user | Analyzing structured plan JSON for resource changes ( ) | | Auditing run history across many TFC workspaces | Listing runs for the known…

\\t'\n```\n\n### List Runs by Workspace Name (requires org)\n\n```bash\nTOKEN=\"${TFE_TOKEN:?TFE_TOKEN not set}\"\nBASE_URL=\"https://${TFE_ADDRESS:-app.terraform.io}/api/v2\"\nORG=\"ForumViriumHelsinki\"\nWORKSPACE=\"infrastructure-gcp\"\n\n# Get workspace ID first\nWS_ID=$(curl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/organizations/$ORG/workspaces/$WORKSPACE\" | \\\n jq -r '.data.id')\n\n# List runs\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WS_ID/runs?page[size]=10\" | \\\n jq -r '.data[] | \"\\(.id) | \\(.attributes.status) | \\(.attributes.\"created-at\"[0:19]) | \\(.attributes.message // \"No message\")\"'\n```\n\n### Filter by Status\n\n```bash\nTOKEN=\"${TFE_TOKEN:?TFE_TOKEN not set}\"\nBASE_URL=\"https://${TFE_ADDRESS:-app.terraform.io}/api/v2\"\nWORKSPACE_ID=\"ws-abc123\"\n\n# Filter by single status\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WORKSPACE_ID/runs?filter[status]=errored\" | \\\n jq -r '.data[] | \"\\(.id) | \\(.attributes.status) | \\(.attributes.\"created-at\")\"'\n\n# Filter by multiple statuses\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WORKSPACE_ID/runs?filter[status]=errored,canceled\" | \\\n jq -r '.data[] | \"\\(.id) | \\(.attributes.status)\"'\n```\n\n### Filter by Status Group\n\n```bash\n# Non-final runs (in progress)\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WORKSPACE_ID/runs?filter[status_group]=non_final\"\n\n# Final runs (completed)\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WORKSPACE_ID/runs?filter[status_group]=final\"\n\n# Discardable runs\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WORKSPACE_ID/runs?filter[status_group]=discardable\"\n```\n\n### Include Plan-Only Runs\n\nBy default, plan-only runs are excluded. To include them:\n\n```bash\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WORKSPACE_ID/runs?filter[operation]=plan_and_apply,plan_only,save_plan,refresh_only,destroy\"\n```\n\n### List Runs Across Organization\n\n```bash\nTOKEN=\"${TFE_TOKEN:?TFE_TOKEN not set}\"\nBASE_URL=\"https://${TFE_ADDRESS:-app.terraform.io}/api/v2\"\nORG=\"ForumViriumHelsinki\"\n\n# All runs in org (limited info, no total count)\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/organizations/$ORG/runs?page[size]=20\" | \\\n jq -r '.data[] | \"\\(.id) | \\(.attributes.status)\"'\n\n# Filter by workspace names\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/organizations/$ORG/runs?filter[workspace_names]=infrastructure-gcp,infrastructure-github\"\n```\n\n## Formatted Output Examples\n\n### Table Format with Resource Changes\n\n```bash\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WORKSPACE_ID/runs?page[size]=10&include=plan\" | \\\n jq -r '\n [\"RUN_ID\", \"STATUS\", \"ADD\", \"CHG\", \"DEL\", \"CREATED\"],\n (.data[] | [\n .id,\n .attributes.status,\n (.relationships.plan.data.id as $pid |\n (.included[] | select(.id == $pid) | .attributes.\"resource-additions\" // 0)),\n (.relationships.plan.data.id as $pid |\n (.included[] | select(.id == $pid) | .attributes.\"resource-changes\" // 0)),\n (.relationships.plan.data.id as $pid |\n (.included[] | select(.id == $pid) | .attributes.\"resource-destructions\" // 0)),\n .attributes.\"created-at\"[0:19]\n ]) | @tsv' | column -t\n```\n\n### JSON Output for Further Processing\n\n```bash\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WORKSPACE_ID/runs?page[size]=5\" | \\\n jq '[.data[] | {\n id: .id,\n status: .attributes.status,\n created: .attributes.\"created-at\",\n message: .attributes.message,\n has_changes: .attributes.\"has-changes\",\n auto_apply: .attributes.\"auto-apply\"\n }]'\n```\n\n## Available Filter Parameters\n\n| Parameter | Description | Example Values |\n|-----------|-------------|----------------|\n| `filter[status]` | Run status | `applied`, `errored`, `planned`, `canceled` |\n| `filter[status_group]` | Status group | `non_final`, `final`, `discardable` |\n| `filter[operation]` | Operation type | `plan_and_apply`, `plan_only`, `destroy` |\n| `filter[source]` | Run source | `tfe-api`, `tfe-ui`, `tfe-configuration-version` |\n| `filter[timeframe]` | Time period | `2024`, `year`, `month` |\n| `search[user]` | VCS username | Username string |\n| `search[commit]` | Commit SHA | SHA string |\n| `search[basic]` | Combined search | Search term |\n\n## Run Statuses\n\n**Final States:** `applied`, `planned_and_finished`, `discarded`, `errored`, `canceled`, `force_canceled`, `policy_soft_failed`\n\n**Non-Final States:** `pending`, `planning`, `planned`, `cost_estimating`, `policy_checking`, `confirmed`, `applying`, and others\n\n## Pagination\n\n```bash\n# Page 2 with 20 items per page\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WORKSPACE_ID/runs?page[number]=2&page[size]=20\"\n\n# Check pagination info\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WORKSPACE_ID/runs\" | \\\n jq '.meta.pagination'\n```\n\n## Rate Limiting\n\nThe `/runs` endpoint has a special rate limit of **30 requests/minute** (not 30/second like most endpoints). Plan accordingly when scripting.\n\n## See Also\n\n- `tfc-run-logs`: Get plan/apply logs for a run\n- `tfc-run-status`: Quick status check for a run\n- `tfc-workspace-runs`: Convenience wrapper for known workspaces\n---","attachment_filenames":[],"attachments":[],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"Terraform Cloud List Runs","type":"text"}]},{"type":"paragraph","content":[{"text":"List and filter runs from Terraform Cloud workspaces with formatted output.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"When to Use This Skill","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Use this skill when...","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Use a sibling instead when...","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Listing recent runs for an arbitrary TFC workspace by ID","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Inspecting a single known run ID for status (","type":"text"},{"text":"tfc-run-status","type":"text","marks":[{"type":"code_inline"}]},{"text":")","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Filtering runs by status, operation, or source across an org","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Reading plan/apply log content for a run (","type":"text"},{"text":"tfc-run-logs","type":"text","marks":[{"type":"code_inline"}]},{"text":")","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Searching runs by commit SHA or VCS user","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Analyzing structured plan JSON for resource changes (","type":"text"},{"text":"tfc-plan-json","type":"text","marks":[{"type":"code_inline"}]},{"text":")","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Auditing run history across many TFC workspaces","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Listing runs for the known Forum Virium workspaces (","type":"text"},{"text":"tfc-workspace-runs","type":"text","marks":[{"type":"code_inline"}]},{"text":")","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Prerequisites","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"export TFE_TOKEN=\"your-api-token\" # User or team token\nexport TFE_ADDRESS=\"app.terraform.io\" # Optional","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Core Commands","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"List Recent Runs for a Workspace","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"#!/bin/bash\nset -euo pipefail\n\nTOKEN=\"${TFE_TOKEN:?TFE_TOKEN not set}\"\nBASE_URL=\"https://${TFE_ADDRESS:-app.terraform.io}/api/v2\"\nWORKSPACE_ID=\"${1:?Usage: $0 \u003cworkspace-id> [limit]}\"\nLIMIT=\"${2:-10}\"\n\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WORKSPACE_ID/runs?page[size]=$LIMIT\" | \\\n jq -r '.data[] | [\n .id,\n .attributes.status,\n .attributes.\"created-at\"[0:19],\n (.attributes.message // \"No message\")[0:50]\n ] | @tsv' | \\\n column -t -s

Terraform Cloud List Runs List and filter runs from Terraform Cloud workspaces with formatted output. When to Use This Skill | Use this skill when... | Use a sibling instead when... | |---|---| | Listing recent runs for an arbitrary TFC workspace by ID | Inspecting a single known run ID for status ( ) | | Filtering runs by status, operation, or source across an org | Reading plan/apply log content for a run ( ) | | Searching runs by commit SHA or VCS user | Analyzing structured plan JSON for resource changes ( ) | | Auditing run history across many TFC workspaces | Listing runs for the known…

\\t'","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"List Runs by Workspace Name (requires org)","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"TOKEN=\"${TFE_TOKEN:?TFE_TOKEN not set}\"\nBASE_URL=\"https://${TFE_ADDRESS:-app.terraform.io}/api/v2\"\nORG=\"ForumViriumHelsinki\"\nWORKSPACE=\"infrastructure-gcp\"\n\n# Get workspace ID first\nWS_ID=$(curl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/organizations/$ORG/workspaces/$WORKSPACE\" | \\\n jq -r '.data.id')\n\n# List runs\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WS_ID/runs?page[size]=10\" | \\\n jq -r '.data[] | \"\\(.id) | \\(.attributes.status) | \\(.attributes.\"created-at\"[0:19]) | \\(.attributes.message // \"No message\")\"'","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Filter by Status","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"TOKEN=\"${TFE_TOKEN:?TFE_TOKEN not set}\"\nBASE_URL=\"https://${TFE_ADDRESS:-app.terraform.io}/api/v2\"\nWORKSPACE_ID=\"ws-abc123\"\n\n# Filter by single status\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WORKSPACE_ID/runs?filter[status]=errored\" | \\\n jq -r '.data[] | \"\\(.id) | \\(.attributes.status) | \\(.attributes.\"created-at\")\"'\n\n# Filter by multiple statuses\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WORKSPACE_ID/runs?filter[status]=errored,canceled\" | \\\n jq -r '.data[] | \"\\(.id) | \\(.attributes.status)\"'","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Filter by Status Group","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Non-final runs (in progress)\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WORKSPACE_ID/runs?filter[status_group]=non_final\"\n\n# Final runs (completed)\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WORKSPACE_ID/runs?filter[status_group]=final\"\n\n# Discardable runs\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WORKSPACE_ID/runs?filter[status_group]=discardable\"","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Include Plan-Only Runs","type":"text"}]},{"type":"paragraph","content":[{"text":"By default, plan-only runs are excluded. To include them:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"curl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WORKSPACE_ID/runs?filter[operation]=plan_and_apply,plan_only,save_plan,refresh_only,destroy\"","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"List Runs Across Organization","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"TOKEN=\"${TFE_TOKEN:?TFE_TOKEN not set}\"\nBASE_URL=\"https://${TFE_ADDRESS:-app.terraform.io}/api/v2\"\nORG=\"ForumViriumHelsinki\"\n\n# All runs in org (limited info, no total count)\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/organizations/$ORG/runs?page[size]=20\" | \\\n jq -r '.data[] | \"\\(.id) | \\(.attributes.status)\"'\n\n# Filter by workspace names\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/organizations/$ORG/runs?filter[workspace_names]=infrastructure-gcp,infrastructure-github\"","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Formatted Output Examples","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Table Format with Resource Changes","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"curl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WORKSPACE_ID/runs?page[size]=10&include=plan\" | \\\n jq -r '\n [\"RUN_ID\", \"STATUS\", \"ADD\", \"CHG\", \"DEL\", \"CREATED\"],\n (.data[] | [\n .id,\n .attributes.status,\n (.relationships.plan.data.id as $pid |\n (.included[] | select(.id == $pid) | .attributes.\"resource-additions\" // 0)),\n (.relationships.plan.data.id as $pid |\n (.included[] | select(.id == $pid) | .attributes.\"resource-changes\" // 0)),\n (.relationships.plan.data.id as $pid |\n (.included[] | select(.id == $pid) | .attributes.\"resource-destructions\" // 0)),\n .attributes.\"created-at\"[0:19]\n ]) | @tsv' | column -t","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"JSON Output for Further Processing","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"curl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WORKSPACE_ID/runs?page[size]=5\" | \\\n jq '[.data[] | {\n id: .id,\n status: .attributes.status,\n created: .attributes.\"created-at\",\n message: .attributes.message,\n has_changes: .attributes.\"has-changes\",\n auto_apply: .attributes.\"auto-apply\"\n }]'","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Available Filter Parameters","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Parameter","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Description","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Example Values","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"filter[status]","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Run status","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"applied","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"errored","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"planned","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"canceled","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"filter[status_group]","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Status group","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"non_final","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"final","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"discardable","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"filter[operation]","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Operation type","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"plan_and_apply","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"plan_only","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"destroy","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"filter[source]","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Run source","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"tfe-api","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"tfe-ui","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"tfe-configuration-version","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"filter[timeframe]","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Time period","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"2024","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"year","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"month","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"search[user]","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"VCS username","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Username string","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"search[commit]","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Commit SHA","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"SHA string","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"search[basic]","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Combined search","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Search term","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Run Statuses","type":"text"}]},{"type":"paragraph","content":[{"text":"Final States:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"applied","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"planned_and_finished","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"discarded","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"errored","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"canceled","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"force_canceled","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"policy_soft_failed","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"paragraph","content":[{"text":"Non-Final States:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"pending","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"planning","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"planned","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"cost_estimating","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"policy_checking","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"confirmed","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"applying","type":"text","marks":[{"type":"code_inline"}]},{"text":", and others","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Pagination","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Page 2 with 20 items per page\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WORKSPACE_ID/runs?page[number]=2&page[size]=20\"\n\n# Check pagination info\ncurl -sf --header \"Authorization: Bearer $TOKEN\" \\\n \"$BASE_URL/workspaces/$WORKSPACE_ID/runs\" | \\\n jq '.meta.pagination'","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Rate Limiting","type":"text"}]},{"type":"paragraph","content":[{"text":"The ","type":"text"},{"text":"/runs","type":"text","marks":[{"type":"code_inline"}]},{"text":" endpoint has a special rate limit of ","type":"text"},{"text":"30 requests/minute","type":"text","marks":[{"type":"strong"}]},{"text":" (not 30/second like most endpoints). Plan accordingly when scripting.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"See Also","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"tfc-run-logs","type":"text","marks":[{"type":"code_inline"}]},{"text":": Get plan/apply logs for a run","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"tfc-run-status","type":"text","marks":[{"type":"code_inline"}]},{"text":": Quick status check for a run","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"tfc-workspace-runs","type":"text","marks":[{"type":"code_inline"}]},{"text":": Convenience wrapper for known workspaces","type":"text"}]}]}]},{"type":"hr","attrs":{"markup":"---"}}]},"metadata":{"date":"2026-06-05","name":"tfc-list-runs","author":"@skillopedia","source":{"stars":35,"repo_name":"claude-plugins","origin_url":"https://github.com/laurigates/claude-plugins/blob/HEAD/terraform-plugin/skills/tfc-list-runs/SKILL.md","repo_owner":"laurigates","body_sha256":"2554cb4a4766c34c30b1cd5decebd77e37976f3a928fc5035a9e2d27d3cdff64","cluster_key":"8140609f987abadd4938dfd44f57fb78f11ea16fac4e8936d77b5c627faaa020","clean_bundle":{"format":"clean-skill-bundle-v1","source":"laurigates/claude-plugins/terraform-plugin/skills/tfc-list-runs/SKILL.md","bundle_sha256":"1737c81c343a326a8854c6010a7982006df9480477bc3244a299d5f1e1fb98e1","attachment_count":0,"text_attachments":0,"binary_attachments":0},"cluster_size":1,"skill_md_path":"terraform-plugin/skills/tfc-list-runs/SKILL.md","import_metadata":{"date":"2026-06-05","author":"@skillopedia","version":"v1","category":"security","category_label":"Security"},"exact_dupes_collapsed_into_this":0},"created":"2025-12-16T00:00:00.000Z","version":"v1","category":"security","modified":"2026-04-25T00:00:00.000Z","reviewed":"2026-04-25T00:00:00.000Z","import_tag":"clean-skills-v1","description":"List Terraform Cloud workspace runs filtered by status or date. Use when reviewing run history, finding failed runs, or auditing infra changes. Requires TFE_TOKEN.","allowed-tools":"Bash, Read","user-invocable":false}},"renderedAt":1782981409564}

Terraform Cloud List Runs List and filter runs from Terraform Cloud workspaces with formatted output. When to Use This Skill | Use this skill when... | Use a sibling instead when... | |---|---| | Listing recent runs for an arbitrary TFC workspace by ID | Inspecting a single known run ID for status ( ) | | Filtering runs by status, operation, or source across an org | Reading plan/apply log content for a run ( ) | | Searching runs by commit SHA or VCS user | Analyzing structured plan JSON for resource changes ( ) | | Auditing run history across many TFC workspaces | Listing runs for the known…