kovidgoyal/kitty · warning

Clipboard alias request payload is not valid base64 encoded

Error message

Clipboard alias request payload is not valid base64 encoded UTF-8, aborting the write request. Error: {e}

What it means

The walias message's alias-list payload failed strict base64/UTF-8 decoding; kitty aborts the in-flight write request with EINVAL.

Source

Thrown at kitty/clipboard.py:446

                protocol_type=ProtocolType.osc_5522,
                id=sanitize_id(m.get('id', '')),
                human_name=m.get('name', ''),
                password=m.get('pw', ''),
            )
            self.handle_write_request(self.in_flight_write_request)
        elif typ == 'walias':
            wr = self.in_flight_write_request
            if wr is None:
                return
            mime = m.get('mime', '')
            if not mime:
                log_error('Clipboard alias request has no MIME type, aborting the write request')
                self.abort_write_request(wr, 'EINVAL')
                return
            try:
                aliases = strict_base64_decode(epayload).decode('utf-8').split()
            except Exception as e:
                log_error(f'Clipboard alias request payload is not valid base64 encoded UTF-8, aborting the write request. Error: {e}')
                self.abort_write_request(wr, 'EINVAL')
                return
            for alias in aliases:
                wr.aliases[alias] = mime
        elif typ == 'wdata':
            wr = self.in_flight_write_request
            if wr is None:
                return
            mime = m.get('mime', '')
            try:
                if not mime:
                    self.commit_write_request(wr)
                    return
                wr.add_base64_data(epayload, mime)
            except OSError:
                self.abort_write_request(wr, 'EIO')
                raise
            except ValueError as e:

View on GitHub (pinned to 6d5d0c4406)

Solutions

  1. Base64-encode the alias list exactly (no whitespace/padding tricks)
  2. Test payloads with python -c 'import base64; base64.b64decode(s, validate=True)'
Defensive patterns

Strategy: validation

Validate before calling

import base64
def enc_aliases(names):
    return base64.b64encode(' '.join(names).encode('utf-8')).decode('ascii')

Prevention

When it happens

Trigger: type=walias with epayload that is not strict base64 of UTF-8 alias names.

Common situations: Unencoded alias strings, trailing whitespace breaking strict base64, or truncated sequences.

Related errors


AI-assisted analysis of kovidgoyal/kitty@6d5d0c4406 (2026-08-27). Data as JSON: /api/errors/dd86d12af641f7c9. Report an issue: GitHub.