Rensei docs
Nodes

Linear Action Nodes

Linear action nodes for issue management.

Linear action nodes let workflows read and update Linear issues, create comments, manage AgentSession state, and perform text manipulation on Linear content. All Linear action nodes use your organization's connected Linear OAuth credentials - no API key configuration is needed in individual node configs.

Linear uses team-canonical state names. The state "Started" is the correct name for active work on most Rensei teams - "In Progress" silently no-ops. Always verify state names in your Linear team settings before configuring linear.issue.update or linear.issue.advance.

AgentSession nodes

linear.agent_session.acknowledge

Acknowledges a Linear AgentSession, signaling to Linear that your workflow has accepted the work. Call this as the first action after a linear.agent_session.created trigger to prevent the session from timing out in Linear's UI before your agent begins.

Input ports

PortTypeRequiredDescription
sessionIdstringyesLinear AgentSession ID (from trigger output)
organizationIdstringnoOverride org context

Output ports - success (acknowledged) / fail ({ error: string })


linear.agent_session.close

Closes a Linear AgentSession by emitting a response activity that transitions the session state from active to complete. Place this at the terminal branch of every SDLC stage to give users a clean session close in the Linear UI.

The Linear API has no explicit closeAgentSession mutation. Rensei implements close by emitting a response activity, which transitions the AgentSession to complete state. Sessions left without a close call appear perpetually active in the Linear interface.

Input ports

PortTypeRequiredDescription
sessionIdstringyesLinear AgentSession ID
reasonstringnoOptional closing message shown in the Linear session thread
organizationIdstringnoOverride org context

Output ports

PortFieldDescription
success{ closed: boolean, skipped?: boolean, reason?: string }Session was closed (or suppressed if already closed)
fail{ error: string }Linear API error

skipped: true is returned when the session was already closed (idempotent). Sessions that were never forwarded to Linear (self-dispatched stages with synthetic UUIDs) are also skipped silently - no error is raised.

Issue nodes

linear.issue.read

Fetches the current state of a Linear issue by ID.

Input ports

PortTypeRequired
issueIdstringyes

Output ports - success (LinearIssue) / fail ({ error: string })

LinearIssue shape

{
  id: string
  identifier: string    // e.g. "REN-1234"
  title: string
  description?: string
  url: string
  state: { id: string; name: string; type: string }
  assignee?: { id: string; name: string; email: string }
  labels?: Array<{ id: string; name: string; color: string }>
  team: { id: string; name: string; key: string }
  priority?: number
  estimate?: number
}

linear.issue.update

Updates one or more fields of a Linear issue.

Input ports

PortTypeRequiredDescription
issueIdstringyesLinear issue UUID
titlestringnoNew title
descriptionstringnoNew description (Markdown)
statusstringnoNew state name (must be a canonical team workflow state)
assigneeIdstring | nullnoAssign to user UUID; pass null to unassign
labelIdsstring[]noReplace label set
estimatenumbernoStory point estimate
prioritynumbernoPriority (0=none, 1=urgent, 2=high, 3=medium, 4=low)

Output ports - success (LinearIssue) / fail ({ error: string })


linear.issue.advance

Advances a Linear issue to its next workflow state. Uses the team's workflow state ordering - you specify the issue ID, and the platform resolves the next state automatically.

Input ports

PortTypeRequired
issueIdstringyes
organizationIdstringno

Output ports - success (LinearIssue) / fail ({ error: string })


linear.issue.create_sub_issue

Creates a new sub-issue under a parent Linear issue.

Input ports

PortTypeRequiredDescription
parentIssueIdstringyesParent issue UUID
titlestringyesSub-issue title
descriptionstringnoSub-issue description
assigneeIdstringnoAssign sub-issue to user UUID
labelIdsstring[]noInitial labels
estimatenumbernoStory point estimate

Output ports - success (LinearIssue) / fail ({ error: string })

Comment node

linear.comment.create

Creates a comment on a Linear issue. Supports Markdown formatting. Used by the SDLC templates to post progress updates, summaries, and failure messages back to the issue thread.

Input ports

PortTypeRequiredDescription
issueIdstringyesLinear issue UUID
bodystringyesComment body (Markdown)
organizationIdstringnoOverride org context

Output ports - success ({ id: string; createdAt: string }) / fail ({ error: string })

Text utility

linear.text.strip_mentions

Strips Linear @mention syntax from a string. Returns the cleaned text and a list of mentioned user IDs. Use this before passing comment bodies to agents or LLM nodes - the raw mention syntax (@[User Name](mention://user/UUID)) is rarely what you want in a prompt.

Input ports

PortTypeRequired
textstringyes

Output ports

PortFieldDescription
success{ strippedText: string; mentionedUserIds: string[] }Cleaned text + extracted user IDs

Example: SDLC stage open/close pattern

The following YAML excerpt shows how the SDLC v2 template wires acknowledge and close around a dispatch:

steps:
  - id: acknowledge
    type: action
    nodeId: linear.agent_session.acknowledge
    config:
      sessionId: "{{ $trigger.data.sessionId }}"

  - id: dispatch
    type: action
    nodeId: agent.invoke
    config:
      stageEvent: "{{ $trigger.data }}"

  - id: close
    type: action
    nodeId: linear.agent_session.close
    config:
      sessionId: "{{ $trigger.data.sessionId }}"
      reason: "Development stage dispatched. I'll continue in the session thread."

On this page