---
title: "shell-quote Breaking Changes on npm | Since.dev"
description: "What each shell-quote release removed, renamed or changed: 10 breaking changes in 4 versions on npm, each with its source."
canonical_url: https://since.dev/packages/npm/shell-quote
last_updated: 2026-09-29
---

# shell-quote breaking changes

Every breaking API change we have recorded in shell-quote on npm: 10 breaking changes in 4 versions. Below are its newest 4 versions, removals and renames first, each with its source.

Newest change September 29, 2026

## 1.11.0

1 breaking change, first published September 29, 2026.

- **Behavior changed** `quote`  

Tokens after a comment containing line terminators are now rejected by quote. Code that passes such tokens must strip the line terminators first. [github.com](https://github.com/ljharb/shell-quote/blob/v1.11.0/CHANGELOG.md)

## 1.10.0

1 breaking change, first published July 10, 2026.

- **Behavior changed** `parse`  

Inside single quotes, a backslash is now treated as a literal character, so input that relied on the old escaping will parse differently. Review any single-quoted strings containing backslashes. [github.com](https://github.com/ljharb/shell-quote/blob/v1.10.0/CHANGELOG.md)

## 1.9.0

7 breaking changes, first published June 25, 2026.

- **Behavior changed** `quote`  

quote output changes for strings starting with \~, which are now escaped. Code that relies on the previous unescaped output may need updating. [github.com](https://github.com/ljharb/shell-quote/blob/v1.9.0/CHANGELOG.md)
- **Signature changed** `ControlOperator`  

Was type ControlOperator = "||" | "&&" | ";;" | "|&" | "<(" | ">>" | ">&" | "&" | ";" | "(" | ")" | "|" | "<" | ">"; now type ControlOperator = parse.ControlOperator. [npmjs.com](https://www.npmjs.com/package/shell-quote/v/1.9.0)
- **Signature changed** `parse`  

Was function parse(cmd: string, env?: {readonly \[key: string\]: string | undefined}, opts?: ParseOptions): ParseEntry\[\] function parse<T extends object | string>(cmd: string, env: (key: string) => T | undefined, opts?: ParseOptions)... [npmjs.com](https://www.npmjs.com/package/shell-quote/v/1.9.0)
- **Signature changed** `ParseEntry`  

Was type ParseEntry = | string | {op: ControlOperator} | {op: "glob"; pattern: string} | {comment: string}; now type ParseEntry = parse.ParseEntry. [npmjs.com](https://www.npmjs.com/package/shell-quote/v/1.9.0)
- **Signature changed** `ParseOptions`  

Was interface ParseOptions; now type ParseOptions = parse.ParseOptions. [npmjs.com](https://www.npmjs.com/package/shell-quote/v/1.9.0)
- **Signature changed** `ParseOptions.escape`  

Was escape?: string | undefined; now escape?: string. [npmjs.com](https://www.npmjs.com/package/shell-quote/v/1.9.0)
- **Signature changed** `quote`  

Was function quote(args: readonly string\[\]): string; now function quote(args: readonly parse.ParseEntry\[\]): string. [npmjs.com](https://www.npmjs.com/package/shell-quote/v/1.9.0)

## 1.8.4

1 breaking change, first published May 22, 2026.

- **Behavior changed** `quote`  

quote now validates object-token shapes, so malformed object tokens that were previously accepted may now be rejected. Check that any object tokens passed to quote are well-formed. [github.com](https://github.com/ljharb/shell-quote/blob/v1.8.4/CHANGELOG.md)

## Check your code

These are the changes. To see which of them reach your code, [scan a public repository](https://since.dev/scan.md), or have your coding agent call `check_code` with your manifest or lockfile over [MCP](https://since.dev/docs.md#mcp). [The API](https://since.dev/docs.md#api) reads every change in every version, not only the newest. On Team and up, a fix pull request opens for the changes that reach a connected repository. Nothing merges or deploys.

## Put your code on continuous management.

Scan a public repository now, or give your agent one line.

### See how out of date your code is.

[Scan a repository](https://since.dev/scan.md). Any public GitHub repository. No sign-in.

### Tell your agent what changed since it was trained.

`claude mcp add --transport http since https://api.since.dev/mcp`

---

Every page on this site as Markdown: https://since.dev/sitemap.md. For agents: https://since.dev/llms.txt.
