Concepts · Chapter 14 of 63
Steering
Steering files give Kiro permanent project knowledge. Where they live, the four inclusion modes, how scopes merge, and how AGENTS.md fits in.
All levels 5 min read last reviewed 2026-09-04
◎ Learning objective
Write focused steering files, choose the right inclusion mode for each one, and decide between .kiro/steering/ and AGENTS.md.
Steering files are Markdown documents that give Kiro permanent knowledge about your project, so the agent starts every session already knowing your stack, your conventions, and your constraints. They are the difference between an assistant you brief for five minutes each morning and a teammate who read the onboarding binder once and never forgot it.
What is steering?
Steering is context the agent loads automatically, written by you, stored in your repository. Kiro recognizes three foundational files and includes them in every interaction by default:
product.md: what the product is, who it serves, what the business goals aretech.md: frameworks, libraries, tools, technical constraintsstructure.md: file organization, naming conventions, architecture patterns
Beyond those three you add whatever your project needs: an API conventions file, a testing policy, a “how we handle money” file. Each one is plain Markdown and belongs in code review like any other file.
Why it exists
Without steering, every conversation starts from zero. You explain that the project uses PostgreSQL 16, that errors return a specific JSON shape, that the mobile team generates a client from docs/api.md. Then you close the session, and the next one starts from zero again. The agent is not forgetful in an interesting way; it simply has no place to keep long-lived facts.
Steering is that place. It also solves a subtler problem: consistency across people. When the rule lives in a committed file rather than in the prompt habits of whoever is at the keyboard, every teammate’s agent follows the same rule, and changing the rule is a pull request instead of an announcement.
How it works
Where files live. Workspace steering goes in .kiro/steering/ and personal steering in ~/.kiro/steering/. Kiro’s configuration documentation puts steering in the group that merges across scopes, so a global file and a project file both apply rather than one silently replacing the other. KIRO_HOME relocates the global directory if you want separate profiles.
Inclusion modes. Not every rule belongs in every conversation, and a steering folder that loads in full on every turn is just an expensive way to waste context. YAML front matter, which must be the very first content in the file, controls when each file loads:
| Mode | Loads when |
|---|---|
always | Every interaction. The default |
fileMatch | The conversation involves files matching fileMatchPattern |
manual | You reference it explicitly with #steering-file-name |
auto | Kiro matches your request against the file’s name and description |
A conditional file looks like this:
---
inclusion: fileMatch
fileMatchPattern: "src/api/**"
---
fileMatchPattern also accepts a list of globs. In auto mode you add name and description fields so Kiro can tell when the file is relevant.
What a good file looks like. Short, single-domain, and explicit about the reason:
# API conventions
- Every endpoint validates input before touching the database.
- Errors return the shape { "error": { "code", "message" } }, never bare strings.
- New endpoints need an entry in docs/api.md. Why: our mobile team
generates their client from that file.
The why is doing real work there. A rule with a reason survives contact with a situation its author did not anticipate; a bare rule gets applied literally in a case where it makes no sense.
AGENTS.md. Since CLI v2.18.0 and IDE v1.0.309 (August 2026), Kiro loads AGENTS.md files as steering context, and it finds them anywhere in the workspace tree rather than only at the root. Two rules make them different from .kiro/steering/ files. They do not support inclusion modes and are always included. And they can be nested, so services/api/AGENTS.md and packages/ui/AGENTS.md can each carry instructions for their own directory. A global AGENTS.md in ~/.kiro/steering/ works too. The two systems are complementary: each AGENTS.md loads alongside your other steering files. Kiro’s documentation does not state a precedence rule between them, so this site does not claim one.
Common mistakes
One giant file. Dumping the wiki into steering.md means every conversation pays for every rule, and the rules that matter get buried. The fix: one domain per file, and fileMatch or auto for anything that is not universally relevant.
Secrets in steering. API keys, internal hostnames, and customer names in a committed Markdown file are a leak with extra steps, and the agent may repeat them back in output. The fix: never put credentials in steering. Use environment variables through MCP configuration instead, and keep sensitive paths out of reach with .kiroignore.
Rules with no reason. “Always use the repository pattern” gets applied to a two-line script. The fix: one sentence of why per rule.
Steering that has quietly gone stale. A file that still describes last year’s architecture actively misleads the agent, which trusts it. The fix: review steering when you review architecture, and delete rules you no longer enforce.
Where it fits
Steering is the standing context underneath everything. Specs rely on it so requirements do not have to restate your stack. Powers ship steering of their own: a POWER.md is a steering file that tells the agent which MCP tools it now has and when to use them. Custom agents can be pointed at particular resources so a scoped agent reads a scoped slice of your knowledge. And skills are the on-demand counterpart: steering describes the project, a skill describes how to do a job.
Every surface reads steering, and because it lives in the repository it travels into cloud sessions automatically. Since September 1, 2026, cloud configuration sync also pushes steering created in Kiro Web down to local IDE and CLI sessions, where it appears as a read-only preview and is edited in the browser.
Learn more
- Write your first steering file is the ten-minute version.
- AGENTS.md as steering covers the cross-tool option.
- Advanced Tutorial uses steering on a real multi-file change.
- Cheat Sheet lists the modes and paths in card form.
- Common Mistakes has more on steering that backfires.
Frequently asked questions
What is steering in Kiro?
Steering is Kiro's project memory. It is a set of Markdown files that the agent reads as context every time it works, so your conventions, stack, and constraints do not have to be repeated in each conversation.
Where do Kiro steering files live?
Workspace steering lives in .kiro/steering/ inside the repository, and personal steering lives in ~/.kiro/steering/ globally. Kiro merges steering across scopes, so a global file and a project file both apply. AGENTS.md files are also discovered anywhere in the workspace tree.
What are the steering inclusion modes?
Four modes, set in YAML front matter that must be the first content in the file. Always is the default and loads the file every time. fileMatch loads it only when matching files are involved, using fileMatchPattern. Manual loads it only when you reference it with a hash and the file name. Auto matches your request against the file's name and description.
Does Kiro read AGENTS.md?
Yes. Since CLI v2.18.0 and IDE v1.0.309, Kiro loads AGENTS.md files as steering context from anywhere in the workspace tree, not just the root. They do not support inclusion modes and are always included, and they load alongside your other steering files rather than replacing them.
What is the difference between steering and skills?
Steering is always-on context about your project, such as which database version you run. A skill is an on-demand procedure for a task, such as how your team writes release notes. Steering describes the project; a skill tells the agent how to do a job.
☰ Chapter summary
- Steering files are Markdown documents that give Kiro persistent knowledge about your project, so you stop re-explaining your stack every session.
- Three foundational files are included by default: product.md, tech.md, and structure.md.
- Workspace steering lives in .kiro/steering/ and global steering in ~/.kiro/steering/; the two scopes merge.
- Inclusion modes in YAML front matter control when a file loads: always, fileMatch, manual, or auto.
- AGENTS.md files also load as steering, from anywhere in the workspace tree, and are always included.
- One domain per file, always explain the why, and never put secrets in a steering file.
All chapter summaries are collected on the revision page.
Related chapters
- Core knowledgeCore ConceptsThe twelve ideas that make up Kiro, each in one paragraph with a link to its full page, plus permissions, checkpoints, compaction, and a surface matrix.
- ConceptsSkillsA Kiro skill is a reusable SKILL.md instruction pack the agent loads when relevant. Format, folders, activation by description, and skills vs steering.
- ConceptsSpecsA Kiro spec turns an idea into requirements.md, design.md, and tasks.md before code exists. How EARS notation, workflows, and task execution work.
- ConceptsPowersA Kiro power bundles MCP tools with steering so the agent knows when to use them. What is inside a power, how it loads, and how to install one safely.
- Hands-onAdvanced TutorialA production-shaped workflow that combines specs, steering, hooks, MCP, custom agents, and skills, written for engineers who already know the basics.