Modern large language models operate on discrete subword tokens generated by greedy compression algorithms like Byte-Pair Encoding (BPE), WordPiece, or Unigram. While subword tokenization enables high compression rates and fixed vocabulary sizes, it introduces a structural defect at the interface between raw user text and autoregressive inference: the partial token problem, commonly known as the prompt boundary problem.
When a user prompt terminates mid-token or at a punctuation boundary that could otherwise form a multi-character subword, greedy tokenizers segment the text into unnatural subword fragments. Because the underlying model was trained exclusively on continuous text tokenized into the longest possible subwords, encountering fragmented prompt boundaries triggers severe probability distortion and generation failures.
Token healing provides an inference-time solution that eliminates boundary artifacts without requiring model retraining. By rolling back the prompt boundary by one or more tokens and enforcing prefix-constrained decoding via vocabulary tries, production serving engines restore native text-level probability distributions.

The Root Cause: Greedy Tokenization and Boundary Collapse
Language models define conditional probabilities over token sequences:
P(c_1, ..., c_n | p_1, ..., p_m) = \prod P(c_i | p_1, ..., p_m, c_1, ..., c_{i-1})
However, end users and agent runtimes submit raw text strings, not token IDs. A tokenizer splits prompt text into tokens greedily from left to right. When a prompt ends abruptly with characters that form the prefix of longer vocabulary entries, the tokenizer is forced to emit a standalone prefix token.
Consider a prompt ending with the URL prefix https:. In standard BPE vocabularies:
- The full string
https://is encoded as a single token ID (e.g.,[https://]). - The standalone string
https:is encoded as two tokens:[https]and[:].
When a client submits https:, the model receives [:] as its terminal prompt token. During pre-training, the model rarely or never observed the token [:] followed by [//] because :// or https:// was always merged into a single token. Consequently, the model assigns near-zero probability to the token [//], often hallucinating spaces, duplicating punctuation, or failing to emit valid syntax.
Similar boundary failures arise across multiple domains:
- Programming Languages: Code constructs frequently merge punctuation, such as
():,->,!=, or""". A code completion prompt ending in()prevents the model from predicting:cleanly if():exists in the vocabulary. - Logographic and Compounding Languages: Languages without whitespace delimiters (such as Chinese and Japanese) and compounding languages (such as German) suffer constant boundary misalignment. In German,
Eigelb(egg yolk) is tokenized as[ Ei][igel][b], meaning a prompt ending in the complete wordEipresents a partial token to the model.
Empirical Impact: Probability Collapse Across Frontier Models
The severity of boundary distortion in natural text was quantified by Xu et al. (2026) from the University of Washington and the Allen Institute for AI. Their study evaluated model behavior across Chinese, German, and code completion benchmarks under controlled boundary conditions.
The findings demonstrate that partial token distortions are severe and pervasive:
- Non-Whitespace Languages: In Chinese, up to 25% of natural word boundaries fail to align with tokenizer subword boundaries. On exact-match repeat tasks, next-token prediction accuracy dropped by 30% to 77% when prompts ended on natural word boundaries that split underlying subwords.
- Log-Probability Drop: Frontier open-weight models (including Qwen 3 32B, Llama 3.1 8B, and Mistral Nemo) placed three to nine orders of magnitude less probability on the correct continuation when presented with unhealed word boundaries compared to token-aligned baselines.
- Code Generation Vulnerability: In Python code completion benchmarks, Llama 3.1 8B achieved 99.23% continuation accuracy on token-aligned prompts, but accuracy plummeted to 5.20% on natural word-aligned prompts ending in partial delimiters.
- Model Scale Invariance: Scaling model parameters does not mitigate the problem. Larger models with sharper probability distributions often exhibit greater sensitivity to out-of-distribution prompt boundaries than smaller models.
| Benchmark Domain | Model | Token-Aligned Accuracy | Word-Aligned (Partial Token) Accuracy | Accuracy Drop | | :--- | :--- | :--- | :--- | :--- | | Chinese Text | Qwen 3 32B | 50.95% | 15.97% | -34.98% | | Chinese Text | Hunyuan 4B | 51.33% | 20.58% | -30.75% | | German Text | Mistral Nemo 12B | 49.69% | 17.31% | -32.38% | | German Text | Qwen 3 32B | 55.57% | 15.41% | -40.16% | | Code Completion | Llama 3.1 8B | 99.23% | 5.20% | -94.03% | | Code Completion | Mistral Nemo 12B | 99.76% | 4.96% | -94.80% |
(Data source: Xu et al., arXiv:2601.23223)
Architecture of Token Healing: 1-Token Backtracking and Prefix Tries
Pioneered by Lundberg and Ribeiro in the Guidance framework at Microsoft Research, token healing intercepts prompt processing before the initial decode step.
The standard token healing pipeline operates in four stages:
[User Text Prompt]
│
▼
[Greedy Tokenizer] ───► Full Token Stream: [t_1, t_2, ..., t_{n-1}, t_n]
│
(Backtrack 1 Token)
│
▼
[Prefill Engine] ◄────────────────────── Base Prompt: [t_1, t_2, ..., t_{n-1}]
│
▼
[Logit Computation at Step 0]
│
▼
[Vocabulary Prefix Trie] ───► Match all tokens v_k starting with decode(t_n)
│
▼
[Logit Masking] ────────────► Set logits(v) = -inf for all v not in {v_k}
│
▼
[Sampling / Argmax] ────────► Emit healed token t* (e.g., [://] replacing [:])1. Prompt Backtracking
The serving runtime tokenizes the incoming text into N tokens: [t_1, t_2, ..., t_N]. Rather than submitting all N tokens to the transformer, the runtime removes the terminal token t_N. The character sequence of t_N is decoded into its raw byte representation: s_prefix = decode(t_N).
2. Prefix Trie Construction
The engine maintains a pre-built character Trie over the tokenizer vocabulary V. Each node in the Trie represents a character or byte, and paths from the root to terminal nodes correspond to valid token IDs in V. Querying the Trie with s_prefix yields the set of all token IDs {v_k} whose string representation begins with s_prefix.
For example, if t_N is [:], the Trie query returns token IDs corresponding to [:], [://], [: ], [:\n], [:=], and any other vocabulary item starting with :.
3. Step 0 Logit Masking
The transformer executes its standard parallel prefill pass over the truncated sequence [t_1, ..., t_{N-1}]. For the initial autoregressive decode step (step 0), the logit processor applies a binary mask over the vocabulary:
logits(v) = logits(v) if v in {v_k} else -inf
This forces the model to choose among valid completions that start with the prefix text already typed by the user, evaluated in the context of [t_1, ..., t_{N-1}].
4. Text Stitching and Token Emission
When the model selects a token t from {v_k}, the engine computes the remainder text: s_remainder = decode(t)[len(s_prefix):]. The generation continues normally for all subsequent steps without constraints.
Exact Marginalization: ByteSampler and Multi-Token Backtracking
While 1-token backtracking resolves the majority of prompt boundary artifacts in English and programming languages, it acts as a heuristic. In compounding languages or complex multi-byte UTF-8 sequences, the boundary artifact may span two or more tokens.
To solve this, Hayase et al. (2025) introduced ByteSampler, an exact algorithm that converts any subword BPE model into a byte-level generative process.
Instead of backing off by a fixed single token, ByteSampler constructs a dynamic prefix tree containing all valid token segmentations that cover the trailing byte sequence of the prompt. By marginalizing token probabilities across paths in the segmentation tree, ByteSampler samples tokens according to the true underlying text probability distribution:
- 100% Exact Continuation: In evaluations across Chinese, German, and code benchmarks, ByteSampler restored exact-match continuation accuracy to 100.00% across all evaluated models, completely eliminating the partial token degradation.
- Bounded Compute Overhead: The algorithm adds between 0.17 and 1.38 additional forward passes on average, representing a minor latency trade-off compared to the cost of erroneous generations or prompt retries.
Production Serving Implementation and Systems Trade-Offs
Deploying token healing in high-throughput inference engines (such as vLLM, SGLang, and TensorRT-LLM) introduces specific systems and memory management considerations.
KV Cache Management and PagedAttention
During standard autoregressive serving, the key-value (KV) cache stores past activations in non-contiguous memory blocks managed by PagedAttention. Because token healing truncates the prompt by one token before prefill, the KV cache allocation matches N - 1 tokens directly.
No KV cache rollback or slot eviction is required if backtracking occurs before memory reservation. If an engine evaluates the full N tokens during speculative validation, it can simply pop the terminal slot from the request's logical block table.
Interaction with Prefix Caching (RadixAttention)
Production engines like SGLang rely on Radix Trees to cache KV states across shared system prompts and multi-turn conversations. When token healing is active:
- The immutable prefix
[t_1, ..., t_{N-1}]achieves an exact match against existing Radix tree nodes. - Cache hits remain unaffected because the backtracked sequence aligns with common prefix boundaries.
- The dynamic step 0 logit mask executes entirely on the GPU during the sampling kernel, adding less than 15 microseconds of overhead.
# Minimal reference implementation of Token Healing Logit Processor
import torch
class TokenHealingLogitsProcessor:
def __init__(self, prefix_token_id: int, tokenizer, vocab_trie):
self.prefix_str = tokenizer.decode([prefix_token_id])
# Find all token IDs in vocabulary that start with prefix_str
self.allowed_token_ids = vocab_trie.get_prefix_matches(self.prefix_str)
self.mask = None
self.step = 0
def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor) -> torch.FloatTensor:
if self.step == 0:
if self.mask is None:
self.mask = torch.full_like(scores, float('-inf'))
self.mask[:, self.allowed_token_ids] = 0.0
scores = scores + self.mask
self.step += 1
return scoresStructured Generation and Grammar Integration
Frameworks like Outlines and Guidance combine token healing with Finite-State Automata (FSA) to enforce structured outputs (such as JSON schemas or regex patterns).
When structured grammars specify exact prompt terminators (e.g., {"name": "), naive tokenization can cause the final quote " to collide with subsequent string tokens. Combining token healing with FSA logit indexers ensures that grammar transitions evaluate valid merged tokens seamlessly.
Streaming Protocols (SSE) and Client Serialization
In streaming APIs using Server-Sent Events (SSE), token healing requires careful boundary handling:
- If an API client optimistically renders prompt text locally, step 0 must emit only the newly generated suffix
decode(t*)[len(s_prefix):]to prevent duplicatings_prefixin the UI stream. - If the model selects
twheredecode(t) == s_prefix, the step 0 payload is empty, and standard streaming resumes on step 1.
Conclusion and Recommendations
The partial token problem is an inherent mathematical consequence of combining greedy subword tokenizers with autoregressive sequence models. As empirical benchmarks reveal, natural word-complete prompts in code, logographic languages, and compounding text suffer significant probability degradation when boundaries split vocabulary tokens.
For production inference systems:
- Enable Token Healing by Default: Serving runtimes should integrate 1-token backtracking and prefix trie logit masking across all endpoints handling interactive chat, code completion, and structured extraction.
- Employ Exact Sampling for Compounding Domains: For enterprise workloads in non-whitespace or heavily compounding languages, exact marginalization approaches like ByteSampler should be utilized to guarantee complete distribution alignment.
- Align Client-Side Streaming: Ensure API gateways and streaming serialization layers account for prefix subtraction on step 0 to maintain clean UI token rendering without duplicate characters.
Sources
- Xu et al. (2026): Are you going to finish that? A Practical Study of the Partial Token Problem (arXiv:2601.23223)
- Hayase et al. (2025): Sampling from Your Language Model One Byte at a Time (arXiv:2506.14123)
- Guidance: Prompt Boundaries and Token Healing (Microsoft Research / GitHub)
- Outlines: Structured Text Generation (dottxt-ai / GitHub)



