Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,12 @@ app/src/persistence/schema.rs.orig
# Don't include personal Claude Code settings
.claude/settings.local.json

# External context files (Confluence exports, API specs, etc.)
.artifacts/

# Kiro agent configuration and knowledge base
.kiro/

# Don't include Claude Code worktrees
.claude/worktrees/

Expand Down
107 changes: 107 additions & 0 deletions specs/GH9066/product.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
# PRODUCT.md — Support Kiro CLI Agent Integration in Warp

Issue: https://github.com/warpdotdev/warp/issues/9066

## Summary

Add Kiro CLI (`kiro`) as a first-class supported CLI agent in Warp, alongside
Claude Code, Codex, Gemini CLI, and the other agents already integrated. When a
user runs `kiro` in a Warp terminal, Warp detects the session, displays the
Kiro-branded agent footer, enables the rich input composer (Ctrl-G), and tracks
session status (in-progress, blocked, success) using the same plugin event
protocol used by other agents.

Figma: none provided.

## Goals / Non-goals

In-scope:

- Detecting `kiro` as a CLI agent session in the terminal.
- Displaying the Kiro-branded footer and toolbar chip while a `kiro` session is
active.
- Enabling the rich input composer (Ctrl-G / footer button) for composing
prompts to send to Kiro.
- Showing plugin install/update instructions when the Warp plugin is not
installed or is out of date.
- Tracking session status (InProgress, Blocked, Success) via the Warp plugin
event protocol.
- Surfacing Kiro in the "Third party CLI agents" settings page.
- Telemetry for Kiro sessions consistent with other agents.
- macOS support (primary). Linux support follows the same code path and is
included. Windows support is not in scope for this spec.

Out of scope:

- Changes to the Warp built-in agent, execution profiles, or onboarding.
- A new `SkillProvider::Kiro` variant — Kiro CLI supports the existing
`SkillProvider::Agents` skill format; no Kiro-specific skill provider is
needed at this time.
- Custom toolbar commands or user-configured regex patterns for Kiro.
- Remote (SSH) session support beyond what the existing plugin infrastructure
already provides generically.

## Behavior

1. When a user runs `kiro` (or a command whose first token is `kiro`) in a Warp
terminal pane, Warp detects an active Kiro CLI session and begins tracking it
in `CLIAgentSessionsModel`.

2. While a Kiro session is active, the Kiro-branded agent footer is displayed at
the bottom of the terminal pane. The footer shows the Kiro logo, the session
status, and the rich input button. Layout, interaction model, and dismiss
behavior are identical to the Claude Code and Gemini footers.

3. Pressing Ctrl-G (or clicking the rich input button in the footer) opens the
rich input composer. The composer accepts free-form text and slash-command
skills from `SkillProvider::Agents`. The skill command prefix is `/`.

4. Submitting a prompt from the rich input composer sends it to the running
`kiro` process via the terminal PTY, exactly as it does for other agents.

5. When the Warp plugin for Kiro is installed and active, session status updates
(InProgress, Blocked, Success) are reflected in the footer in real time.
When the plugin is not installed, the footer still appears (via command
detection) but status tracking is unavailable.

6. When the Warp plugin is not installed, Warp displays plugin install
instructions in the footer's plugin pane. The instructions guide the user
through installing the plugin so that status tracking becomes available.

7. When the installed plugin version is below the minimum required version, Warp
displays plugin update instructions in the same pane.

8. The Kiro agent entry appears in the "Third party CLI agents" settings page
under Settings → Agents → Third party CLI agents, alongside Claude Code,
Codex, Gemini, and the other supported agents, when
`FeatureFlag::KiroCLIAgent` is enabled. The entry shows the Kiro logo and
name. When the flag is disabled, Kiro is hidden from the selector, and any
persisted command mapping to Kiro is displayed as "Other" in the settings UI
(without exposing Kiro as a selectable option) until the flag is re-enabled.
A documentation link is not included in the initial implementation because
the current settings UI does not render per-agent documentation links for any
agent; adding that capability is a follow-up item.

9. Session start, status changes, and session end are reported to telemetry
using the same `CLIAgentType` telemetry event structure used by other agents,
with `CLIAgentType::Kiro` as the agent discriminant.

10. In a remote SSH terminal pane, the Kiro footer and rich input still appear
when a `kiro` command is detected (via command detection, same as local),
but plugin install and update instructions are not shown because the Warp
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [IMPORTANT] Current generic plugin-chip behavior does show manual install instructions for remote CLI-agent sessions, so this needs a Kiro-specific suppression change in the tech spec or the product behavior should align with the existing remote install pane.

plugin cannot be installed remotely. If the Warp plugin is already running
on the remote system and emitting events, real-time status tracking works
normally. If it is not, the footer appears in degraded mode (no status,
no install instructions pane) — consistent with how other agents behave in
remote sessions.

11. Kiro sessions are included in shared session state sync (the `cli_agent`
field in the shared session protocol) using the serialized name `"Kiro"`.

12. The `kiro` command is not treated as a custom/unknown agent — it maps
directly to `CLIAgent::Kiro` and receives the full first-class treatment
(branded footer, logo, install instructions) rather than the generic
"CLI Agent" fallback.

13. No existing agent's behavior, settings, or telemetry is changed by this
addition.
Loading