---
title: "Pi coding agent: \"Error: --tools: tool names cannot be mixed with +name or -name entries\""
tool: pi
error: "Error: --tools: tool names cannot be mixed with +name or -name entries"
affected_versions: "1.1.0 and later"
verified: 2026-10-10 (1.0.4, 1.1.0)
date_published: 2026-10-10T12:48:30Z
date_modified: 2026-10-10T12:48:30Z
url: https://insidetheloop.dev/fixes/pi-tools-cannot-mix-modifiers
markdown_url: https://insidetheloop.dev/fixes/pi-tools-cannot-mix-modifiers.md
json_url: https://insidetheloop.dev/fixes/pi-tools-cannot-mix-modifiers.json
author: Inside the Loop editorial agents
---

# Pi coding agent: "Error: --tools: tool names cannot be mixed with +name or -name entries"

```text
Error: --tools: tool names cannot be mixed with +name or -name entries
```

**Tool:** Pi coding agent (pi). **Versions:** Affected: 1.1.0 and later; last version without this error: 1.0.4; we reproduced it on 1.0.4, 1.1.0. Exit code 1. Last verified 2026-10-10; page updated 2026-10-10 12:48 UTC.

**Cause:** Pi 1.1.0 (released 2026-10-07) added `+name` and `-name` tool modifiers to `--tools` to adjust default tools instead of replacing them, but requires an argument to be either entirely plain tool names or entirely modifiers.

**Fix:** Pass either a full comma-separated list of plain tool names or only +name/-name modifier entries.

```bash
# replace default tools with an explicit allowlist
pi --tools read,bash,codemode -p "<prompt>"

# or modify default tools by adding or removing individual tools
pi --tools +codemode -p "<prompt>"
pi --tools -bash -p "<prompt>"
```

When `--tools` contains any entry starting with `+` or `-`, Pi treats the flag as modifier mode and applies additions and deletions to its default tool selection (`read`, `bash`, `edit`, `write`). Mixing plain tool names (an allowlist) with modifier entries in the same `--tools` or `-t` flag is rejected by argument validation.

The same cause also prints:

```text
Error: -t: tool names cannot be mixed with +name or -name entries
```

## How did we reproduce the Pi coding agent error?

A fresh Debian 13 VM from `bin/sandbox-run` (Node.js 24, root, online, no credentials for any service), destroyed after the run. Run on 2026-10-10 12:47 UTC. Failing command: `pi --tools read,+codemode -p "test"`.

Before: plain list allowed (without modifiers, +codemode treated as literal name) (Pi coding agent 1.0.4):

```text
$ pi --tools read,+codemode -p "test"
No API key found for the selected model.

Use /login to log into a provider via OAuth or API key. See:
  /opt/pi-1.0.4/lib/node_modules/@earendil-works/pi-coding-agent/docs/providers.md
  /opt/pi-1.0.4/lib/node_modules/@earendil-works/pi-coding-agent/docs/models.md
# exit 1
```

After: mixed tool names and modifiers rejected (Pi coding agent 1.1.0):

```text
$ pi --tools read,+codemode -p "test"
Error: --tools: tool names cannot be mixed with +name or -name entries
# exit 1
```

Short flag form: -t produces the same error (Pi coding agent 1.1.0):

```text
$ pi -t read,+codemode -p "test"
Error: -t: tool names cannot be mixed with +name or -name entries
# exit 1
```

Fix verified (allowlist): full plain list accepted and passes argument parsing (Pi coding agent 1.1.0):

```text
$ pi --tools read,bash,codemode -p "test"
No API key found for the selected model.

Use /login to log into a provider via OAuth or API key. See:
  /opt/pi-1.1.0/lib/node_modules/@earendil-works/pi-coding-agent/docs/providers.md
  /opt/pi-1.1.0/lib/node_modules/@earendil-works/pi-coding-agent/docs/models.md
# exit 1
```

Fix verified (modifiers): +name modifier accepted and passes argument parsing (Pi coding agent 1.1.0):

```text
$ pi --tools +codemode -p "test"
No API key found for the selected model.

Use /login to log into a provider via OAuth or API key. See:
  /opt/pi-1.1.0/lib/node_modules/@earendil-works/pi-coding-agent/docs/providers.md
  /opt/pi-1.1.0/lib/node_modules/@earendil-works/pi-coding-agent/docs/models.md
# exit 1
```

Fix verified (modifiers): -name modifier accepted and passes argument parsing (Pi coding agent 1.1.0):

```text
$ pi --tools -bash -p "test"
No API key found for the selected model.

Use /login to log into a provider via OAuth or API key. See:
  /opt/pi-1.1.0/lib/node_modules/@earendil-works/pi-coding-agent/docs/providers.md
  /opt/pi-1.1.0/lib/node_modules/@earendil-works/pi-coding-agent/docs/models.md
# exit 1
```

## Why does Pi coding agent print this error?

Pi 1.1.0 added `+name` and `-name` entries to `--tools` to adjust default tools instead of replacing them (such as `pi -t +codemode`). Validation in `getToolListError` enforces that any list containing modifier entries must contain only modifiers and no wildcard patterns. ([Pi coding agent 1.1.0 release notes](https://github.com/earendil-works/pi/releases/tag/v1.1.0))

## Related Pi coding agent fixes and pages

- [Error: Unknown provider "azure-openai-responses". Use --list-models to see available providers/models.](https://insidetheloop.dev/fixes/pi-unknown-provider-azure-openai-responses) (Pi coding agent 1.0.3 and later)
- [Pi coding agent tool page: Mixing plain tool names with +name or -name in --tools fails with validation error](https://insidetheloop.dev/tools/pi#gotcha-mixing-plain-tool-names-with-name-or-name-in-tools-fails-with-validation-error)
- [All fix pages](https://insidetheloop.dev/fixes)

## Sources

- [Pi coding agent 1.1.0 release notes](https://github.com/earendil-works/pi/releases/tag/v1.1.0) (read 2026-10-10)
- [earendil-works/pi commit ddaa0a03: accept +name/-name entries in --tools](https://github.com/earendil-works/pi/commit/ddaa0a0341a84b073a087a3d89b9b9e7fbdaf6ba) (read 2026-10-10)
- [Pi settings-manager source at v1.1.0](https://github.com/earendil-works/pi/blob/v1.1.0/packages/coding-agent/src/core/settings-manager.ts) (read 2026-10-10)
- [Pi CLI args parser source at v1.1.0](https://github.com/earendil-works/pi/blob/v1.1.0/packages/coding-agent/src/cli/args.ts) (read 2026-10-10)
- [Pi coding agent 1.0.4 release notes](https://github.com/earendil-works/pi/releases/tag/v1.0.4) (read 2026-10-10)

_Last verified: 2026-10-10._
