kovidgoyal/kitty · warning

Clipboard alias request has no MIME type, aborting the write

Error message

Clipboard alias request has no MIME type, aborting the write request

What it means

An OSC 5522 walias (alias) message omitted the required `mime` metadata key; kitty aborts the associated in-flight write request with EINVAL.

Source

Thrown at kitty/clipboard.py:440

                password=m.get('pw', ''),
            )
            self.handle_read_request(rr)
        elif typ == 'write':
            self.in_flight_write_request = WriteRequest(
                is_primary_selection=m.get('loc', '') == 'primary',
                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)

View on GitHub (pinned to 6d5d0c4406)

Solutions

  1. Always include mime=<value> metadata in walias messages
  2. Only send walias between wbegin and wend of a live write request

Example fix

# before
\x1b]5522;type=walias\x1b]5522;<aliases-b64>\x1b\\
# after
\x1b]5522;type=walias:mime=text/plain\x1b]5522;<aliases-b64>\x1b\\
Defensive patterns

Strategy: validation

Validate before calling

def valid_walias(meta: dict) -> bool:
    return bool(meta.get('mime'))

Prevention

When it happens

Trigger: Sending type=walias without mime=... metadata while a write request is in flight.

Common situations: Client bugs; incomplete implementations of the kitty clipboard alias extension.

Related errors


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