Linear's engineering team shares the architectural decisions behind Linear Agent, their AI-powered task automation tool. Key design choices include: a high-level system prompt that sets communication style and hard boundaries without over-scripting behavior; tool design that encodes constraints structurally rather than through verbose instructions; a 'system skills' composition model that progressively loads only relevant context and tooling per task; and a custom agent harness built from scratch to support dynamic tool injection, contextual approval flows, and asynchronous sub-agent execution. The team deliberately avoided exposing low-level primitives like the GraphQL API or SDK to limit the blast radius of mistakes, trading some capability breadth for predictability.
Table of contents
The system prompt The design of the agent’s tools The agent’s model of Linear The scope of each run The custom harness underneath A moving target Questions this post answers
How do you prevent an AI agent from taking unpredictable or overly broad actions in a product context?
Encoding constraints into tool design rather than relying solely on prompt instructions is more effective. By shaping tool parameters so invalid actions are impractical to take — similar to good API or UI abstractions — the agent's action space is naturally bounded. Requiring confirmation before risky or hard-to-undo actions, and limiting access to low-level primitives like raw GraphQL APIs, further reduces the blast radius of mistakes. Teams shipping AI agents into production track patterns like these on daily.dev.
What is the 'system skills' pattern for managing context in an AI agent?
System skills are composable units that each bundle a system prompt fragment, metadata, and a set of tools representing an independent capability area. Rather than loading all context upfront, the agent infers which skills are relevant before a run and can load additional skills on-demand as a task unfolds. This keeps each thread's context focused while allowing the agent to support a broad range of capabilities without an ever-growing prompt. Developers designing agent context strategies find related architectural discussions on daily.dev.
Why would a team build a custom AI agent harness instead of using an off-the-shelf library?
Off-the-shelf harness libraries have strong opinions about execution flow — typically providing tools upfront, calling run, and waiting for a final response. A custom harness enables orchestration behaviors that don't fit that model: dynamic tool injection that preserves the provider's prefix cache, contextual mid-run approval logic based on conversation history rather than just tool name and parameters, and suspending a parent agent mid-tool-call while a sub-agent runs asynchronously. Engineers choosing between agent frameworks weigh trade-offs like these on daily.dev.