/status
Check status of Devin sessions. Use when user asks "how's Devin doing", "check Devin status", "is my task done", or "what's the progress".
From yellow-devinnpx claudepluginhub kinginyellows/yellow-plugins --plugin yellow-devin[session-id] [--tag TAG] [--status STATUS] [--archived]devin/Check Devin Session Status
Show status and progress for a specific session or list recent sessions.
Workflow
Step 1: Validate Prerequisites
Validate DEVIN_SERVICE_USER_TOKEN and DEVIN_ORG_ID are set. See
devin-workflows skill for validation functions.
Check jq is available:
command -v jq >/dev/null 2>&1 || {
printf 'ERROR: jq required. Install: https://jqlang.github.io/jq/download/\n' >&2
exit 1
}
Step 2: Determine Mode
Parse $ARGUMENTS:
- If a session ID is provided: Validate with
validate_session_idfromdevin-workflowsskill, then fetch that specific session. - If empty (or only flags): List recent sessions.
Parse optional flags:
--tag TAG— filter list by tag--status STATUS— filter by status (e.g.,running,exit,error)--archived— include archived sessions
Step 3a: Single Session Status
Fetch using the org-scoped list endpoint with session_ids filter (see
Session Lookup Pattern in devin-workflows skill):
DEVIN_API_BASE="https://api.devin.ai/v3"
ORG_URL="${DEVIN_API_BASE}/organizations/${DEVIN_ORG_ID}"
response=$(curl -s --connect-timeout 5 --max-time 10 \
-w "\n%{http_code}" \
-X GET "${ORG_URL}/sessions?session_ids=${SESSION_ID}&first=1" \
-H "Authorization: Bearer $DEVIN_SERVICE_USER_TOKEN")
Parse from items array: jq '.items[0]'. If the result is null or the array
is empty, report "Session not found."
Check curl exit code, HTTP status, jq parse — see devin-workflows skill.
Display format:
Session: {session_id}
Title: {title}
Status: {status}
URL: {url}
ACUs: {acus_consumed} ACUs
Tags: {tags, comma-separated}
Created: {created_at, formatted}
Updated: {updated_at, formatted}
If is_archived is true, show [ARCHIVED] badge after status.
PRs table (if pull_requests array is non-empty):
PRs:
# | State | URL
1 | open | github.com/org/repo/pull/42
2 | merged | github.com/org/repo/pull/43
Structured output (if structured_output is present, format as JSON).
Special handling by status:
suspended— highlight and suggest: "Session is paused. Send a message with/devin:message {id}to auto-resume it."error— show error context and suggest remediationexit— show completion summary and any artifactsnew/claimed— note session is initializing
Use the format_timestamp helper from devin-workflows skill api-reference to
format Unix timestamps as relative time for recent sessions, absolute date for
older ones.
Step 3b: List Recent Sessions
Fetch from the org-scoped endpoint (inherently filtered to this org):
url="${ORG_URL}/sessions?first=10"
Apply filters if provided:
--tag TAG→ append&tags=TAG--status STATUS→ not a direct API filter; filter client-side from response (note: filters the fetched page only — sessions with that status may exist on subsequent pages)--archived→ include archived sessions in display (by default, hideis_archived: truesessions)
Check curl exit code, HTTP status, jq parse.
Display as table:
Session ID | Status | Title | ACUs | PRs | Created
abc123def4... | running | Auth feature | 2.50 | 1 | 2h ago
def456ghi7... | exit | Bug fix #42 | 1.20 | 1 | 5h ago
ghi789jkl0... | suspended | Refactor API | 0.80 | 0 | 1d ago
If no sessions found, report "No recent Devin sessions found."
Pagination: If has_next_page is true, ask via AskUserQuestion:
- "Showing 10 sessions. Show more?"
- Options: "Yes, show next page" / "No, that's enough"
If user wants more, fetch next page using end_cursor from response.
Error Handling
See devin-workflows skill for error handling patterns. All error output must
sanitize tokens.