---
name: "strip_prefix_ci panics on multi-byte UTF-8 input"
---

# Bug 437: strip_prefix_ci panics on multi-byte UTF-8 input

## Description

The `strip_prefix_ci` function in `server/src/chat/transport/matrix/assign.rs` slices the input string at `prefix.len()` bytes without checking that the offset is a valid UTF-8 char boundary. When the input message starts with multi-byte characters (e.g. `⏺` which is 3 bytes), the slice can land mid-character, causing a panic.

## How to Reproduce

Send a Matrix message to the bot that starts with a multi-byte UTF-8 character (e.g. `⏺ huskies - wizard_confirm`) where the bot name byte length falls inside a multi-byte character.

## Actual Result

Thread panics: `byte index 6 is not a char boundary; it is inside '⏺' (bytes 4..7)`

## Expected Result

The function should return `None` (no match) without panicking, since an ASCII bot name cannot match a slice containing multi-byte characters.

## Acceptance Criteria

- [ ] strip_prefix_ci checks is_char_boundary before slicing
- [ ] No panic when input contains multi-byte UTF-8 characters at the prefix boundary
