inherits field.
A relatable example: dependabot
This is a good way to think about inheritance in practice.
Start with a reusable git policy that is intentionally conservative:
~/.kiro/generators/manifests/kg.toml
~/.kiro/generators/agents/git-readonly.toml
~/.kiro/generators/agents/dependabot.toml
- the parent defines the default behavior
- the child reuses that behavior instead of copying it
- the child changes only the specific capability it actually needs
Basic inheritance
rust agent inherits all configuration from default and can override or extend it.
Multiple Parents
Agents can inherit from multiple parents:Merge Behavior
Arrays (allowedTools, resources, etc.)
Arrays are merged (combined): Parent:Objects (nativeTools, mcpServers, etc.)
Objects are deep merged: Parent:Scalars (description, timeout, etc.)
Scalars are replaced: Parent:Inheritance Chain
You can create deep inheritance hierarchies:base → dev → rust-dev
Force properties
Force properties override permission restrictions in child agents. They ensure specific commands or paths are always allowed, even if a child tries to deny them.forceAllow for shell commands
Force specific shell commands to be allowed:~/.kiro/generators/agents/dependabot.toml
~/.kiro/generators/agents/dependabot.toml
allow and removed from deny.
forceAllow for paths
Force specific paths to be readable or writable:Use Cases
Force properties are useful for:- Ensuring critical permissions in specialized agents (like dependabot needing git push)
- Creating permission templates that can’t be accidentally restricted
- Building agent hierarchies with guaranteed capabilities
Validation
Usekg validate to see the final merged configuration: