Every key in settings.json with its default, and how the file behaves.
Kubyl has no settings window. App: Open Settings (Ctrl , , the Kubyl menu or the welcome screen) opens settings.json in your default editor. The one exception is the Clusters & Kubeconfigs tab, which edits per-context and source settings and writes them into the same file.
It is live-reloaded . Save the file and the change applies immediately. Kubyl writes changes atomically and only writes fields that differ from the defaults. A $schema entry is added to a new file, and settings.schema.json is regenerated on every start. Point your editor at it for completion and validation. If the file can't be parsed, Kubyl never overwrites it. Your changes stay in memory and a warning is logged. Secrets never live here. See Authentication . settings.json {
"theme": "system",
"kubernetes": {
"health_check_interval": 30
},
"keymap": {
"preset": "k9s"
},
"logs": {
"tail_lines": 500,
"wrap": true
}
}Copy Key Default Meaning themedarkdark, light or system. The light theme is still unfinished.ui_font_size13Interface size in px, 9–24. Changed by zoom.
Key Default Meaning load_default_kubeconfigtrueLoad ~/.kube/config. load_kubeconfig_envtrueLoad the files in $KUBECONFIG. kubeconfigs[]Extra files or folders. ~ is expanded. health_check_interval30Seconds between cluster pings. group_contextstrueOne sidebar entry per cluster and user. separate_groupsContexts to show separately. contexts.<id>Per cluster: display_name, color, default_namespace, production, read_only, hidden, namespaces.
Key Default Meaning group_orderOrder of sidebar groups. Ids: overview, events, workloads, network, config, storage, access, cluster, administration, custom, and the contributed rows alerts, network_flows, prometheus. hidden_groupsGroups to hide, by the same ids. show_countstrueShow object counts next to kinds. default_grace_periodnone Grace period for deletes. cluster_ordernamename or connected_first.
preset is default or k9s. bindings is a list of entries with a context and a map of keystrokes to actions. Use null to unbind a key, and an array for actions with arguments. Changes apply immediately and mistakes show as a warning toast. See Keyboard shortcuts .
settings.json {
"keymap": {
"bindings": [
{
"context": "ResourceList",
"bindings": {
"ctrl-k": null,
"x": ["palette::Open", { "mode": "resources" }]
}
}
]
}
}Copy Key Default Meaning ring_buffer_lines100000Lines kept per log view. timestampstrueShow timestamps. wrapfalseWrap long lines. followtrueFollow new lines. tail_lines1000Lines to load initially.
Key Default Meaning shell_overridenone Shell to run. Otherwise /bin/bash, then /bin/sh, then sh. scrollback_lines10000Scrollback size. font_size13Terminal font size. option_as_metafalse on macOS, true elsewhereTreat Option (Alt) as Meta. open_inpanelpanel or tab.debug_imagebusybox:1.37Image for debug containers. node_shell_imagedocker.io/tyrola/kubyl-debug:3.24Image for node shells. node_shell_namespacekube-systemNamespace for node shell pods.
Key Default Meaning concurrency_per_pod2Parallel transfers per pod. verifytrueSHA-256 verification on both sides. chunk_size_mb4Chunk size for large files. show_hiddenfalseShow hidden files. bookmarks[]Saved locations. debug_imagebusybox:1.37Image for distroless containers. preview_limit_kb256Largest file to preview.
Key Default Meaning validatetrueValidate against the cluster's schema. hide_managed_fieldstrueHide managedFields. confirm_apply_on_prodtrueAsk before applying on production clusters. side_by_side_difffalseSide-by-side instead of unified diffs.
Key Default Meaning metrics.sourceautoauto, prometheus, metrics_server or off.metrics.discovertrueLook for Prometheus automatically. metrics.refresh_interval15Seconds between refreshes. metrics.prometheusPer-cluster endpoint: namespace, service, port, scheme, path, url, service_account, insecure_skip_tls_verify, disabled. metrics.queriesPromQL overrides by query id. $sel is replaced with label matchers. overview.top_n4Top-N entries, 1–4. overview.derived_eventstrueDerive OOMKilled warnings. overview.notify_warningsfalseToasts for Warning events in favorited namespaces. overview.notify_interval60Seconds between notification checks. prometheus.sidebartrueShow the Prometheus row. prometheus.refresh_interval15Seconds, 5–3600.
See the tables in Alerts and Network flows . The per-cluster blocks are alerts.clusters.<id> (disabled, discover, alertmanagers, matchers, rules) and netflow.clusters.<id> (backend, hubble, whisker, loki).
Key Default Meaning alerts.sidebarautoauto, always or never.alerts.ack_duration1hLength of an acknowledge silence. netflow.sidebartrueShow the Network Flows row. netflow.max_flows20000Flows kept in memory. netflow.max_age_minutes60Oldest flow kept. netflow.keep_query_valuesfalseKeep URL query values in HTTP flows.
Key Default Meaning argocd.api_transportautoauto, proxy or forward.argocd.auto_connecttrueReconnect API mode automatically. updates.clusters.<id>provider plus eks, gke or aks details.webview.open_inautoauto or browser.webview.idle_stop_minutes30Stop idle background forwards. 0 keeps them. webview.devtoolsfalseEnable developer tools. webview.private_by_defaultfalseOpen every view as a private session.
Key Default Meaning kubeconfig_editor.backups_kept10Backups per edited kubeconfig. kubeconfig_editor.allow_external_editstrueOffer to edit files Kubyl doesn't own. kubeconfig_editor.editable_filesFiles you opted in to editing. self_update.auto_checktrueCheck for updates every 6 hours. self_update.channelstablestable or preview. preview currently falls back to stable.
Some state isn't a setting. Window layout, favorites, saved port-forwards, palette history and column choices live in state.json, which Kubyl manages itself. See Files and environment .