kovidgoyal/kitty · warning
Send text: {val} is invalid ({msg}), ignoring
Error message
Send text: {val} is invalid ({msg}), ignoring What it means
deprecated send_text lines must have at least 3 parts: mode, shortcut, and text. The abort helper logs 'Send text: {val} is invalid (Incomplete), ignoring' (message placeholders may render literally depending on logging formatting).
Source
Thrown at kitty/options/utils.py:1899
macos_show_window_title_in = ans.get('macos_show_window_title_in', 'all')
if to_bool(val):
if macos_show_window_title_in == 'none':
macos_show_window_title_in = 'menubar'
elif macos_show_window_title_in == 'window':
macos_show_window_title_in = 'all'
else:
if macos_show_window_title_in == 'all':
macos_show_window_title_in = 'window'
elif macos_show_window_title_in == 'menubar':
macos_show_window_title_in = 'none'
ans['macos_show_window_title_in'] = macos_show_window_title_in
def deprecated_send_text(key: str, val: str, ans: dict[str, Any]) -> None:
parts = val.split(' ')
def abort(msg: str) -> None:
log_error(f'Send text: {val} is invalid ({msg}), ignoring')
if len(parts) < 3:
return abort('Incomplete')
mode, sc = parts[:2]
text = ' '.join(parts[2:])
key_str = f'{sc} send_text {mode} {text}'
for k in parse_map(key_str):
ans['map'].append(k)
def deprecated_adjust_line_height(key: str, x: str, opts_dict: dict[str, Any]) -> None:
fm = {'adjust_line_height': 'cell_height', 'adjust_baseline': 'baseline', 'adjust_column_width': 'cell_width'}[key]
mtype = getattr(ModificationType, fm)
if x.endswith('%'):
ans = float(x[:-1].strip())
if ans < 0:
log_error(f'Percentage adjustments of {key} must be positive numbers')
returnView on GitHub (pinned to 6d5d0c4406)
Solutions
- Use the modern map syntax: map <shortcut> send_text <mode> <text...>.
- Remove legacy send_text lines.
- Ensure mode, shortcut, and text tokens are all present if you must keep legacy syntax.
Example fix
# before send_text all # after map ctrl+enter send_text all some text
Defensive patterns
Strategy: validation
Validate before calling
def valid_legacy_send_text(val: str) -> bool:
return len(val.split(' ')) >= 3 Type guard
def is_send_text_complete(val: str) -> bool:
return len(val.split(' ')) >= 3 Prevention
- Prefer map ... send_text all <text> syntax
- Delete legacy send_text lines during upgrades
When it happens
Trigger: A send_text line like 'send_text all' (2 tokens) or fewer; legacy syntax with missing text portion.
Common situations: Migrating very old kitty configs that used send_text with different arity; truncated paste of a config line.
Related errors
- The option {key} is deprecated. Use hide_window_decorations
- The option {key} is deprecated. Use macos_show_window_title_
- Percentage adjustments of {key} must be positive numbers
- The option {key} is deprecated. Use scrollbar instead.
- This should be run as kitten broadcast
AI-assisted analysis of kovidgoyal/kitty@6d5d0c4406 (2026-08-27).
Data as JSON: /api/errors/baf6857454beeaf4.
Report an issue: GitHub.