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, devices, access, cluster, administration, custom, and the contributed rows alerts, network_flows, prometheus, plus security and cost (the last two are available in the release after 0.6.0). Groups you leave out follow in their default order. hidden_groupsGroups to hide, by the same ids. devices (Device Resources, for DRA) only shows on clusters that serve those kinds. 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 in containers. Otherwise /bin/bash, then /bin/sh, then sh. local_shell$SHELL, else %COMSPEC%, else /bin/shShell of local terminal tabs. Available in the release after 0.6.0. 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.
Each of these has its own page with the full tables: Helm , Agents and Cost .
Key Default Meaning helm.pathfound on PATH The helm binary to run. helm.artifact_hubfalseAlso search Artifact Hub in the Charts tab. helm.default_timeout5m0sHelm's --timeout for installs, upgrades, rollbacks and uninstalls. helm.atomictrueRoll back a failed install or upgrade. agent.defaultfirst installed Agent for new threads: claude, codex, gemini, copilot, goose, opencode or a custom id. agent.customnone Extra ACP agents, or built-ins started differently. agent.kubectlnonenone or context: what kubectl in the agent's own shell reaches.agent.cwdscratch folder per thread The agent's working folder. agent.max_tool_output_kib64Most a Kubyl tool returns to the agent, 8–1024 KiB. agent.default_log_lines500Lines a logs tool call returns by default, 10–5000. cost.clusters.<id>.servicedetected Where OpenCost is, as namespace/service:port (port defaults to 9003). Available in the release after 0.6.0.
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, column choices, sidebar folders, the YAML revision history, reopenable agent thread titles (never their contents) live in state.json, which Kubyl manages itself. See Files and environment .