<!-- Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
or more contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright
ownership. Elasticsearch B.V. licenses this file to you under
the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License. -->
Kibana settings docs
Work in the Kibana clone. Paths below are relative to
.
Document every user-facing
setting and Advanced Settings (
) entry in
YAML. Do not write the reference as freeform Markdown.
Schema,
, description style, the
field, gated notes, and lifecycle history live in docs-builder:
automated settings and
settings-with-applies-example.yml.
This YAML does not follow the usual
lifecycle-symmetry rule. Read the settings page, not that skill.
Implementation tutorials stay in
docs/extend/tutorials/configuring-your-plugin.md
and
docs/extend/tutorials/ui-settings.md
. This skill covers the docs YAML only.
Classify
| User changes it in | Code signal | Docs YAML |
|---|
| or Cloud Edit user settings | Plugin schema, in | docs/reference/configuration-reference/<area>-settings.yml
|
| Stack Management → Advanced Settings → Space Settings | (default ) | docs/reference/advanced-settings-space.yml
|
| Advanced Settings → Global Settings | uiSettings.registerGlobal()
or | docs/reference/advanced-settings-global.yml
|
If the PR adds both a config-schema field and a
registration, document both. They are different settings.
A setting can exist in both places only when
uses
to lock an Advanced Settings key. Document the
key in the Advanced Settings YAML. Document
itself in general settings YAML if that key changed.
Do not document a
key in the Advanced Settings YAML. Do not document a
key in configuration-reference YAML.
Workflow
Task progress:
- [ ] 1. Classify kibana.yml vs space vs global
- [ ] 2. Grep docs/reference and {settings} includes for the collection
- [ ] 3. Read the registration for key, type, default, category, and availability. Use the merge base if this branch removes the setting
- [ ] 4. Copy the nearest valid sibling
- [ ] 5. Tag applies_to from the docs-builder settings page
- [ ] 6. Check kibana.yml ech against the Cloud user-settings allowlist
- [ ] 7. Preview the Supported on line
- [ ] 8. If users need instructions, open a docs-content issue or PR
Find the YAML file
bash
git grep -n -- '<prefix-or-key>' HEAD -- docs/reference
If a matching group already exists, add the entry there. Match the surrounding entries.
Resolve
from the plugin
.
plus schema field
is
.
Most edits stay in an existing YAML file. The host
file already includes it with
. Create a new YAML plus host Markdown only when no file documents that prefix:
- Add
docs/reference/configuration-reference/<area>-settings.md
with pointing at the new YAML.
- Add the page under →
configuration-reference.md
.
- Reporting settings already split across several YAML files included from . Add to the matching include, not a new page.
Do not invent an Advanced Settings
name. Place the entry in the group that matches
in code. If
is omitted, the setting lands in General in the UI. If the UI adds a new category, add a matching
with an
. Keep order close to the UI.
Do not add YAML for internal flags, test-only config, or a rename that a documented deprecation already covers.
Verify against source
Do not copy defaults, types, or availability from the issue body or PR title.
If this branch adds or changes the setting, read the implementation on this branch. If this branch removes the setting, grep the PR merge base. HEAD no longer has the registration. Keep the existing YAML entry and follow the docs-builder settings page for
. If the setting is not part of this branch, read Elastic
. If
is your fork, fetch
. If
is
, fetch
.
bash
git grep -n -- '<setting.key>' HEAD -- '*.ts' '*.tsx'
For a removal, recover the registration from the merge base against the same main ref you fetched above.
bash
git grep -n -- '<setting.key>' "$(git merge-base HEAD upstream/main)" -- '*.ts' '*.tsx'
bash
git grep -n -- '<setting.key>' "$(git merge-base HEAD origin/main)" -- '*.ts' '*.tsx'
| Claim | kibana.yml source | Advanced Settings source |
|---|
| Key | + schema field path | Object key in / |
| Default | schema.*({ defaultValue })
| or |
| Type | Schema type | plus optional |
| Options | / literals | / |
| Availability | , schema.contextRef('serverless')
, Cloud support | Serverless allowlists and / / |
| UI category / group | n/a | array. YAML title. |
The
value must match the runtime key at HEAD, or the merge-base key when this branch removes the setting. Quote keys that contain a colon, for example
. The
i18n string is the UI label. It is not the YAML
key.
Copy the nearest sibling. Change only what this setting needs. Include
and
when the source defines them. Copy the
term the surrounding file already uses. Include
when the generated slug would collide or stay unreadable.
applies_to lookups
Read the docs-builder settings page, then fill Kibana-only values from source:
- : grep the Elastic Cloud Hosted user-settings allowlist in a local clone, under
scala-services/adminconsole/src/main/resources/settings/kibana/
. Write if the key is listed. Write if it is not. Do not use node scripts/check_kibana_settings.js
for this. That CLI only lists Kibana config keys. It does not read the Cloud allowlist. Do not infer support from the published Cloud settings page. That page is generated from this YAML.
- Advanced Settings : those keys are not on the Cloud user-settings allowlist. Follow the docs-builder deployment keys. The allowlist grep is for only.
- If Elastic Cloud Hosted should list the setting, include the YAML from
docs/reference/cloud/elastic-cloud-kibana-settings.md
with . That filter shows a setting only when the entry has .
- Advanced Settings : start at
src/platform/packages/shared/serverless/settings/common/index.ts
. If the ID is there, write . If it is not, grep , , , and in that folder. Ignore . Follow each allowlist's imports to resolve the constant to the runtime key, including IDs exported from packages other than kbn-management/settings/setting_ids
. Map to , to , to , and to . If the ID is only on some of those four lists, nest those keys. If it is on none, write .
- : use or
schema.contextRef('serverless')
. Write a scalar or .
Preview
bash
docs-builder
docs-builder serve
On a Kibana PR:
https://docs-v3-preview.elastic.dev/elastic/kibana/pull/<n>/reference/kibana/<page>/
YAML that parses is not proof that badges render. Inspect the setting's
for
dd > p.settings-supported-on
.
How-to follow-up
If users need instructions beyond the reference entry:
- Search published docs with the MCP ( or ).
- Open an issue, or an accompanying PR on the page that already covers that workflow.
Skip this when the reference entry is enough.
Verification