This page lists how fast changes reach developers and what Kiro Enterprise Management enforces, by client, together with the model identifiers and setting keys a policy accepts, the console features that are not supported, the known issues you may meet, and fixes for common problems. It is for administrators who already have a published policy. Kiro Enterprise Management is in preview for new Kiro profiles created in US East (N. Virginia) (us-east-1). It is on for all newly created profiles there; existing profiles are not affected by this change. Kiro CLI users need version 3.1.0 or later; Kiro IDE users need version 1.4.154 or later. Capabilities marked "Client rollout" are applied by those versions and by Kiro Crew LTS. To write rules, see the KGL reference.
| What | Sync | A running session |
|---|---|---|
| Rules and settings | Every five minutes, or on client restart | Picks up the change on its next refresh |
| Files: steering, Skills, Powers | Once, when a session starts. No timer | Keeps its copy until the next session |
To get a file change now, start a new session or restart the client.
| Capability | Can ask | match takes | Status |
|---|---|---|---|
model_use | No | Model identifier | Enforced |
apikey_create | No | Nothing | Enforced |
web_search | Yes | Nothing | Enforced |
web_fetch | Yes | Domain | Enforced on web search results |
mcp | Yes | server/tool | Client rollout |
fs_read, fs_write | Yes | File path (*/secrets/*) | Client rollout |
shell | Yes | Command (git push *) | Client rollout |
messaging_channel | No | Channel id (slack) | Kiro Crew |
messaging | No | Nothing | Kiro Crew |
permission_mode | No | Mode (yolo) | Kiro Crew |
cron | No | Nothing | Kiro Crew |
network_egress | No | Domain | Kiro Crew, on its fetch tool |
browser_use | No | Nothing | Kiro Crew |
tailnet_origin | No | Nothing | Kiro Crew |
theme_install | No | Nothing | Kiro Crew |
- Enforced: the Kiro service decides, on every client.
- Client rollout: enforced by the client. Only client builds with client policy apply it. Kiro CLI 3.1.0 or later, Kiro IDE 1.4.154 or later, and Kiro Crew LTS apply these rules.
- Kiro Crew: enforced by Kiro Crew LTS on the developer's machine.
A model_use rule and the default_model setting accept these identifiers:
auto, claude-opus-5.5, claude-sonnet-5.5, claude-opus-5, claude-sonnet-5, claude-opus-4.8, claude-opus-4.7, claude-opus-4.6, claude-sonnet-4.6, claude-opus-4.5, claude-sonnet-4.5, claude-sonnet-4, claude-haiku-4.5, claude-fable-5.1, gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna, deepseek-3.2, minimax-m2.5, minimax-m2.1, glm-5, qwen3-coder-next.
A pattern such as claude-* also matches models that Kiro adds later. Identifiers have no anthropic. prefix.
The console's Settings catalog, in the info pane of the Controls page, lists the same keys with their descriptions.
| Key | What it does | Shipped default |
|---|---|---|
default_model | The default model on every client. A model_use rule must allow it. The one setting a developer may change. | auto |
model_governance.enabled | Restrict the models developers can use to the ones your model_use rules allow. | true in the catalog; false in the controls Kiro creates for a new profile |
cloud_sessions.enabled | Allow developers to start autonomous, task-resolving work in Kiro Cloud Sessions. | false |
device_code_sign_in.enabled | Allow users to sign in to Kiro CLI through the IAM Identity Center OAuth device authorization flow. | true |
web_tools.enabled | Allow clients to offer web search and web fetch tools. Capability rules still govern each call. | true |
mcp_tools.enabled | Allow clients to connect to MCP servers and offer their tools. Capability rules still govern each call. | true |
mcp_registry_url | The MCP registry that clients connect to. Applied by the Kiro CLI; see Client rollout above. | None |
usage_dashboard | Track usage of Kiro features in the admin dashboard. | true |
prompt_logging.enabled | Write Kiro prompts, with metadata, to prompt_logging.destination. | false |
prompt_logging.destination | The S3 location prompt logs are written to, such as s3://bucket/prefix/. | None |
crew_sandbox_min_level | The loosest sandbox level a Kiro Crew host may run spawned processes at. Kiro Crew LTS reads it and orders the levels off < standard < cc < strict and takes the strictest of this and its local tiers, so a host can only raise it. Across a user's groups, the strictest level applies. | None |
Daily usage metrics. Each key below is written as user_activity_report.<key>.
| Key | What it does | Shipped default |
|---|---|---|
enabled | Collect daily aggregate usage metrics for each user. Nothing is exported until an export below is on. | false |
csv_export | Write the daily metrics as CSV, one file per client type, to the bucket below. | false |
csv_destination | The S3 location for the CSV reports. A prefix is required; the bucket must be in the same account and Region as the profile, and its policy must let q.amazonaws.com write there. | None |
otel_export | Push the same daily metrics to your OTLP collector as monotonic Sum counters. | false |
otel_secret_arn | A Secrets Manager secret holding OTEL_EXPORTER_OTLP_ENDPOINT and OTEL_EXPORTER_OTLP_HEADERS. Kiro stores only the ARN and reads the values at export time. | None |
otel_protocol | The OTLP transport, grpc or http/protobuf. It has to be one the collector accepts; a mismatch is an export that never arrives. | gRPC (the catalog's spelling; write grpc in KGL) |
otel_temporality | How counters are reported. Delta suits Datadog; Cumulative is required by Prometheus-based collectors such as Grafana Cloud. | Delta |
otel_private_mode | Send to the collector over a private path: privatelink for a vendor's VPC endpoint service, lattice for a collector you host and share over VPC Lattice. Leave unset for public egress. Kiro builds the path after you publish; it can take minutes. | None |
otel_endpoint_service_name | The vendor's VPC endpoint service name, exactly as published. | None |
otel_endpoint_service_region | The Region of the endpoint service. Must equal the Region inside the service name. | None |
otel_resource_configuration_arn | The ARN of the VPC Lattice resource configuration you share with Kiro over AWS RAM. | None |
otel_collector_hostname | The name your collector's TLS certificate covers. It cannot change while Kiro holds a registration for the resource configuration. | None |
Per-interaction events. Each key below is written as realtime_event_export.<key>.
| Key | What it does | Shipped default |
|---|---|---|
enabled | Stream each user interaction to your OTLP collector as a log record. | false |
secret_arn | A Secrets Manager secret for the event collector, holding the same two variables. It must differ from the daily export's secret. Events are sent over http/protobuf. | None |
private_mode | As user_activity_report.otel_private_mode, for the event collector. | None |
endpoint_service_name | As above, for the event collector. | None |
endpoint_service_region | As above, for the event collector. | None |
resource_configuration_arn | As above, for the event collector. | None |
collector_hostname | As above, for the event collector. | None |
All settings take !locked. Only default_model also takes !replace. For the tags and the pairing rules, see Settings in the KGL reference. For the S3 bucket, KMS key, and secret prerequisites behind these values, see Prompt logging, User activity reports, and OpenTelemetry export.
Organization steering files arrive at ~/.kiro/cloud-cache/resolved/config/organization/steering/ on the developer's machine. They are distributed when a session starts, not on the five-minute refresh that rules and settings use; a running session keeps its copy until the next session. Always give a steering file the .md extension; a file without it arrives as .txt and Kiro never loads it.
KGL accepts these, but Enterprise Management does not support them. Do not use them.
| Item | What happens if you use it |
|---|---|
The capabilities subagent, skill, power, context, diagnostics, sandbox_network, session_start, and autonomous_agents | Not available. The console's Capability catalog lists what a rule can name. To distribute Skills and Powers, use the Agent customizations tab. |
The settings fallback_model, reference_tracker, and continuous_learning | Not in the Settings catalog. |
The tags !floor, !ceiling, and !append | Not supported. Use !locked or, on default_model, !replace. |
| The rule message shown to developers | Not supported. |
Each row gives what you see and what to do.
| What you see | What to do |
|---|---|
| Publish fails after about 10 seconds with "Encountered unexpected error when processing request". | You used a group name in place of a group ID. Use the group ID. |
| A rule for an Okta user or group matches no one. | You used the ID from Okta (00g...). Kiro gives Okta users and groups its own IDs, and Access management does not list them. Pick the user or group in the Form view; the console writes the ID. See Find user and group IDs. |
These rule behaviors are under investigation:
| What you see | Status |
|---|---|
An mcp deny rule did not block an MCP server already in mcp.json for some users; for others it blocked all MCP servers. | Under investigation |
An mcp deny rule also blocked web_fetch, even with an allow rule for web_fetch. | Under investigation |
A web_fetch deny rule with match and exclude asked the developer and did not deny. | Under investigation |
| What you see | What to do |
|---|---|
A setting that needs another setting shows no error until you publish, such as prompt_logging.enabled: true with no destination. | Set both values. See Setting keys. |
| What you see | What to do |
|---|---|
| A refused publish says "1 finding(s) prevented publishing" and does not name the finding. The dialog also says "No errors" and offers Try again. | Check setting pairs in Setting keys and value formats in Common errors. |
| After a refused publish, the page says "The change was not saved". | Your change is saved in the draft; only the publish failed. Fix the finding and publish again. |
| What you see | What to do |
|---|---|
| The associate API accepts a profile ID that does not exist without an error. | Copy the profile ID from the Kiro console and check that the Profile Controls page names the profile. |
| You deleted a policy while it was assigned, and assigning another policy fails with "already associated with resource …". | The profile stays bound to the deleted policy. Disassociate the deleted policy by its ID. Disassociate before you delete. |
| What you see | What to do |
|---|---|
| The client says "Unable to load available models" and does not say that the administrator must allow models. | No model_use rule allows models for this profile, or model_governance.enabled is on with rules that allow nothing. Publish a model_use allow rule. |
| A change has not reached the client. | Rules and settings take up to five minutes. Files arrive when the next session starts. Restart the client, or sign out and sign in. |
| What you see | What to do |
|---|---|
| Every client error returns HTTP 400, also for not-found, access-denied, and conflict conditions. The message holds internal text such as "(Service: KiroEnterpriseManagement, Status Code: 404, …)". | Use the exception name, such as ResourceNotFoundException. The AWS CLI and the SDKs show the right exception. |
createdBy, updatedBy, and publishedBy show a service role, not the caller. | Use the revision number and timestamps. |
ValidateEnterpriseManagementResource with an empty target returns HTTP 500. | Send either byResource or files. |
| Problem | What to do |
|---|---|
| Controls does not appear in the Kiro console. | The profile was created in us-east-1 before Enterprise Management launched, and gets it at a later date; or the profile is in another Region, which does not have it. |
| The model list is empty. | Check that a model_use allow rule covers the models you expect and publish. If the list is still empty after five minutes, check that the revision is Live, then sign out and sign in again. |
| A change has no effect. | Check that the revision is Live. Wait five minutes or restart the client; for a file change, start a new session. |
| Shell or file actions stopped working in the Kiro CLI. | Add an ask or allow rule for that capability and publish. |
UNKNOWN_GROUP or UNKNOWN_USER | Use the ID, not the name. See Find user and group IDs. |
POLICY_BOUNDARY_VIOLATION | The default model is not allowed by a model_use rule. |
SETTING_REQUIREMENT_MISSING | A setting that is on needs another value, such as a destination. |
| Publish is disabled. | The draft has no unpublished changes. Make a change, or choose Finish editing. |
| A typo gives no error. | The service ignores unknown field names, such as matches:, and the rule then covers everything. Check the spelling. |
Enterprise Management enforcement and limits