Suivez ces étapes dans l'ordre pour mettre à niveau de CLI 2.x vers 3.0.
Le format des données de session a changé et les sessions existantes ne sont pas migrées automatiquement. Sauvegardez vos données de session avant la mise à niveau :
# Back up your session directory cp -r ~/.kiro/sessions ~/.kiro/sessions-v2-backup
Après la mise à niveau, des capacités d'importation de session seront disponibles pour restaurer les sessions clés. Les sessions complexes avec un historique de résultats d'outils étendu pourraient perdre certaines sorties d'outils historiques — le déroulement de la conversation et les décisions sont préservés.
Les Hooks sont passés d'une configuration d'agent intégrée à des fichiers autonomes.
Ancien format — ne pas utiliser en 3.0 (montré à titre de référence pour la migration seulement) :
{ "hooks": { "agentSpawn": [{"command": "echo 'starting'", "matcher": ".*"}], "preToolUse": [{"command": "npm run lint", "matcher": "Write|Edit"}], "fileEdited": [{"command": "prettier --write", "matcher": "\\.ts$"}] } }
Nouveau format (.kiro/hooks/my-hooks.json) :
{ "version": "v1", "hooks": [ { "name": "lint-on-save", "trigger": "PostFileSave", "matcher": "\\.ts$", "action": { "type": "command", "command": "npm run lint" }, "timeout": 30, "enabled": true }, { "name": "format-on-save", "trigger": "PostFileSave", "matcher": "\\.ts$", "action": { "type": "command", "command": "prettier --write {{filePath}}" }, "timeout": 10, "enabled": true } ] }
Correspondance des noms de déclencheurs :
| Ancien déclencheur | Nouveau déclencheur | Notes |
|---|---|---|
agentSpawn | SessionStart | Se déclenche au début d'une nouvelle session |
userPromptSubmit | UserPromptSubmit | Se déclenche avant que l'agent traite une requête |
preToolUse | PreToolUse | Se déclenche avant l'exécution d'un outil |
postToolUse | PostToolUse | Se déclenche après qu'un outil a terminé |
fileEdited | PostFileSave | Se déclenche après qu'un fichier est écrit |
fileCreated | PostFileCreate | Se déclenche après la création d'un nouveau fichier (alias héritié de l'IDE, maintenant unifié) |
agentStop / stop | Stop | Se déclenche à la fin de la session — agentStop est héritié de l'IDE; CLI utilisait stop |
Nouveaux déclencheurs en 3.0 :
| Déclencheur | Description |
|---|---|
PreTaskExec | Avant l'exécution d'une étape de tâche/plan |
PostTaskExec | Après qu'une étape de tâche/plan est terminée |
PostFileDelete | Après la suppression d'un fichier |
Manual | Déclenché uniquement par une invocation explicite de l'utilisateur |
Avant de migrer manuellement, exécutez kiro-cli agent migrate — il convertit automatiquement les règles compatibles et signale ce qui nécessite une attention manuelle. Passez en revue le résultat, puis appliquez les changements restants ci-dessous.
Pour les pipelines de CI, --trust-all-tools fonctionne toujours comme substitution à l'échelle de la session. Autrement, créez ~/.kiro/settings/permissions.yaml avec capability: all, effect: allow dans votre environnement de CI.
Ancienne approche :
kiro-cli --trust-all-tools kiro-cli --trust-tools shell,write /tools trust write /tools trust-all
Nouvelle approche (~/.kiro/settings/permissions.yaml pour la portée utilisateur) :
rules: - capability: shell match: ["git *", "npm *", "npx *"] effect: allow - capability: fs_write match: ["src/**", "tests/**"] effect: allow - capability: fs_read effect: allow - capability: mcp match: ["my-server/*"] effect: allow
Pour la référence complète — changements de comportement, définitions de portée et table de conversion des motifs — consultez Migration des permissions →.
Les profils d'agent sont rétrocompatibles — les configurations existantes continuent de fonctionner. Le harnais d'agent unifié ajoute de nouveaux champs facultatifs et une option de format Markdown.
Ancien format (.kiro/agents/my-agent.json) :
{ "name": "backend-dev", "description": "Backend development agent", "prompt": "You are a backend developer.", "model": "claude-sonnet-4", "tools": ["fs_read", "fs_write", "execute_bash", "grep", "glob"], "toolsSettings": { "execute_bash": { "allowedCommands": ["^git status$", "^npm test"], "deniedCommands": ["^rm -rf"], "denyByDefault": false }, "fs_read": { "allowedPaths": ["src/**"], "deniedPaths": [".env"] }, "fs_write": { "allowedPaths": ["src/**"] } } }
Nouveau format (.kiro/agents/backend-dev.json) :
{ "name": "backend-dev", "description": "Backend development agent", "prompt": "file://resources/PROMPT.md", "model": "claude-sonnet-4", "tools": ["read", "write", "shell"], "permissions": { "rules": [ { "capability": "shell", "match": ["git status", "git diff", "npm test*"], "effect": "allow" }, { "capability": "shell", "match": ["rm -rf*"], "effect": "deny" }, { "capability": "fs_read", "match": [".env", "secrets/**"], "effect": "deny" }, { "capability": "fs_write", "match": ["*.lock"], "effect": "deny" } ] } }
Le champ tools utilise maintenant des étiquettes (noms de catégories comme read, write, shell) au lieu d'identifiants d'outils individuels. Le bloc toolsSettings est remplacé par le tableau permissions.rules.
Migration de toolsSettings vers permissions :
toolsSettings V2 | Règle permissions V3 |
|---|---|
execute_bash.allowedCommands: ["^git status$"] | { "capability": "shell", "match": ["git status"], "effect": "allow" } |
execute_bash.deniedCommands: ["^rm -rf"] | { "capability": "shell", "match": ["rm -rf*"], "effect": "deny" } |
execute_bash.denyByDefault: true | { "capability": "shell", "exclude": ["git *", "npm *"], "effect": "deny" } |
fs_read.allowedPaths: ["src/**"] | { "capability": "fs_read", "match": ["src/**"], "effect": "allow" } |
fs_read.deniedPaths: [".env"] | { "capability": "fs_read", "match": [".env"], "effect": "deny" } |
fs_write.allowedPaths: ["src/**"] | { "capability": "fs_write", "match": ["src/**"], "effect": "allow" } |
Remarque : V2
allowedCommands/deniedCommandsutilisait des motifs regex. V3 utilise glob — les motifs simples se traduisent directement (retirez les ancres^/$, remplacez.*par*). Les regex complexes doivent être réécrites en plusieurs règles glob.
Nouveau format — Markdown (.kiro/agents/backend-dev.md) :
--- name: backend-dev description: Backend development agent model: claude-sonnet-4-20250514 tools: ["read", "write", "shell", "grep"] excludedTools: ["knowledge"] includeMcpJson: true includePowers: false mcpServers: postgres: command: npx args: ["-y", "@modelcontextprotocol/server-postgres"] env: DATABASE_URL: "${DATABASE_URL}" resources: - file://./ARCHITECTURE.md - skill://backend-patterns permissions: rules: - capability: shell match: ["npm *", "node *"] effect: allow welcomeMessage: "Ready to work on backend code." --- You are a backend developer focused on Node.js and TypeScript. Always use async/await. All database queries must be parameterized.
Référence des nouveaux champs :
| Champ | Type | Description |
|---|---|---|
excludedTools | string[] | Outils à exclure même si tools les permet |
includeMcpJson | boolean | Inclure les serveurs .kiro/settings/mcp.json de l'espace de travail |
includePowers | boolean | Inclure les powers installés dans l'IDE |
resources | string[] | URI à charger dans le contexte : file://./path, skill://name |
permissions | object | Règles de politique intégrées (portée agent, prend en charge tous les effets) |
welcomeMessage | string | Message d'accueil personnalisé au démarrage de la session |
Serveurs MCP dans les profils d'agent — prend en charge stdio et HTTP :
{ "mcpServers": { "local": { "command": "npx", "args": ["-y", "@org/server"], "env": {} }, "remote": { "url": "https://api.example.com/mcp", "headers": { "Authorization": "Bearer ${TOKEN}" } } } }
Les variables d'environnement utilisent la syntaxe ${VAR} et sont développées à l'exécution.
L'outil intégré aws_tool a été retiré. Configurez plutôt un serveur MCP AWS. Consultez le registre des serveurs MCP pour les serveurs AWS disponibles, ou utilisez un serveur communautaire :
.kiro/settings/mcp.json :
{ "mcpServers": { "aws": { "command": "npx", "args": ["-y", "@aws/aws-mcp-server"], "env": { "AWS_PROFILE": "${AWS_PROFILE}", "AWS_REGION": "${AWS_REGION}" } } } }
Par exemple,
@aws/aws-mcp-serverest le paquet officiel. Consultez le registre MCP → pour d'autres options.
Si vous avez des hooks, permissions ou scripts qui référencent des identifiants d'outils, mettez-les à jour :
| Ancien identifiant d'outil (2.x) | Nouvel identifiant d'outil | Capacité |
|---|---|---|
readFile | read | fs_read |
writeFile / fsWrite | write | fs_write |
listDirectory | glob | fs_read |
grepSearch | grep / grep_search | fs_read |
fileSearch | file_search | fs_read |
webFetch | web_fetch | web_fetch |
webSearch | web_search | web_search |
Les anciens identifiants en camelCase et les nouveaux identifiants sont tous les deux acceptés dans les profils d'agent et les permissions. Utilisez les nouveaux identifiants à l'avenir.
permissions.yamlkiro-cli diagnostic
Ceci vérifie : les schémas de hooks invalides, les configurations d'agent référençant des outils retirés (y compris aws_tool), et les erreurs de syntaxe du fichier de permissions. Corrigez tous les avertissements signalés avant de déployer en CI.
Guide de migration