aaronsteers/Devin Action
Triggers a Devin.ai session with a given prompt or playbook. Optimized for use directly or as a response to slash commands.
View on GitHubTrust Signals
- Scorecard Score
- not yet scored
- Maintenance Recency
- Activelast commit May 21, 2026
- License
- MIT
Pinned Snippet
uses: aaronsteers/devin-action@6836af14bc904e8eff8e4f2b35eac4c428fc5f34 # v1.0.0tags can be moved; commit SHAs can't. why a SHA?
Inputs
| name | description | required | default |
|---|---|---|---|
| comment-id | Comment ID (optional, for reply chaining and context) | no | — |
| issue-number | Issue or PR number (optional, for context). This can be either an issue number or a pull request number. | no | — |
| playbook-macro | Playbook macro (optional, for structured workflows) - should start with '!' (e.g., !my_playbook) | no | — |
| prompt-text | Additional prompt text (optional). Mutually exclusive with prompt-file. | no | — |
| prompt-file | Path to a file containing the prompt text (optional, relative to the repository root). Use this instead of prompt-text to avoid YAML quoting/escaping issues with multi-line prompts. Mutually exclusive with prompt-text. | no | — |
| devin-token | Devin API Token (required for authentication). Requires a v3-compatible service user credential with ManageOrgSessions permission (service users only; PATs are not supported for v3). | yes | — |
| github-token | GitHub Token (required for posting comments and accessing repo context) | no | — |
| start-message | Message to include in the start comment | no | 🤖 **Starting Devin AI session...** |
| tags | Additional tags to apply to the Devin session (supports CSV or line-delimited format). Automatic tags are always added: gh-actions-trigger and playbook-{macro-name} if playbook-macro is provided. Cannot be used with reuse-session. | no | — |
| reuse-session | Existing Devin session ID or URL to inject a message into (optional). When provided, sends a message to an existing v3 session instead of creating a new one. Accepts either a session ID or a full URL (e.g., https://app.devin.ai/sessions/abc123). Mutually exclusive with 'tags' input. Requires 'org-id'. | no | — |
| dry-run | If 'true', the action will simulate the process without making an actual API call to Devin | no | false |
| wait-for-stopped-status | If 'true', polls GET /v3/organizations/{org_id}/sessions/{devin_id} until status_detail is any non-working state. | no | false |
| wait-minutes-max | Maximum minutes to poll before timing out (only used when wait-for-stopped-status is enabled) | no | 20 |
| api-version | Devin API version to use. Only 'v3' is supported; any other value fails fast. | no | v3 |
| advanced-mode | V3 API advanced mode (optional). Enables specialized session behaviors for automation workflows. Options: 'analyze' (analyze existing sessions via session-links). Requires org-id. | no | — |
| session-links | Session URLs or IDs to provide as context (optional, supports CSV or line-delimited format). Required when advanced-mode is 'analyze'. When provided without advanced-mode, defaults to 'analyze' mode automatically. | no | — |
| org-id | Devin organization ID. Required for v3 session creation, session reuse, and polling. | yes | — |
| max-acu-limit | Maximum ACU limit for the session (optional, v3 API only). Caps the compute budget for the session. | no | — |
| playbook-id | Playbook ID to use for the session (v3 API only). When set, the session will follow the referenced playbook's instructions. The playbook must already exist in the Devin API (synced via the ai-skills repo or created manually). | no | — |
| child-playbook-id | Playbook ID for child sessions (v3 API only). | no | — |
| bypass-approval | If 'true', bypass the approval step for session creation (v3 API only). Requires UseDevinExpert permission. | no | false |
| structured-output-schema | JSON Schema describing the structured output Devin should produce. Accepts YAML or JSON (YAML 1.2 is a superset of JSON, so plain JSON also works). Must parse to a top-level object. Ignored when using 'reuse-session'. | no | — |
| structured-output-required | If 'true', require Devin to submit final structured output before each turn ends. If 'false', structured output remains available but optional. Ignored when using 'reuse-session'. | no | — |
Outputs
| name | description |
|---|---|
| session-id | The Devin session ID |
| session-url | The URL to view the Devin session |
| prompt | The base64-encoded prompt sent to Devin |
| prompt_readable | The human-readable prompt sent to Devin |
| run-url | The GitHub Actions run URL |
| status | The terminal status_detail value when polling completes (only set when wait-for-stopped-status is enabled) |
| summary | The last message from the session (only set when wait-for-stopped-status is enabled) |
| structured-output | The session structured_output as compact JSON (only set when wait-for-stopped-status is enabled and the session has structured output) |