Other formats agents might prefer:
markdownjsonllms.txt

Agent? You probably want markdown or json, or Pod over MCP.

Reported issues for orangerail

Pod holds 16 of 32 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to orangerail.

Most discussed

ONT-112: Bring the npm page to the new front door, and cut 0.1.5

Problem

#180 moved this project's front door from the approval gate to the generated tool surface, and published the register of claims that failed when they were measured. None of it has reached npm.

npm renders a package page from the published tarball, so npmjs.com/package/orangerail still opens with the framing ten measured runs say is the weaker half:

$ npm view orangerail version
0.1.5-not-yet   # today: 0.1.4, whose tarball still says "Decide once what your agent ma

[Read the thread](https://github.com/KimHyeongRae0/orangerail/issues/181) · 2026-08-04 · closed · 0 comments

### ONT-110: List orangerail on the official MCP registry

## Problem

`0.1.4` put `mcpName` on npm, which was the one thing that had to ship before a registry entry was
possible:

```console
$ npm view orangerail mcpName
io.github.KimHyeongRae0/orangerail

npm versions are immutable, so that field could not be added to 0.1.3 after the fact and the listing was blocked on the release existing. It no longer is, and nothing else is stopping it.

The registry at registry.modelcontextprotocol.io is where an agent host resolves a server by name rather

Read the thread · 2026-08-04 · closed · 0 comments

ONT-108: The README is 649 lines and the npm page is a different document with no images

Problem

README.md is 649 lines and ## Quickstart alone is 226 of them.

$ awk '/^## /{if(h)print NR-1-s" lines\t"h; h=$0; s=NR} END{if(h)print NR-s" lines\t"h}' README.md
226 lines	## Quickstart
62 lines	## The run this is built for
47 lines	## Wire it into your agent host
43 lines	## Declaring a rule the generator cannot derive
26 lines	## v0 commands

The Quickstart's problem is not the eleven commands. It is the ~150 lines of prose between them explaining why each one i

Read the thread · 2026-08-04 · closed · 0 comments

ONT-101: The MCP server tells every client it is 0.1.0

Problem

The MCP server reports a version it has not been since three releases ago.

$ node -p "require('orangerail/package.json').version"
0.1.3

$ printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"probe","version":"0"}}}' \
    | ./node_modules/.bin/orangerail mcp
{"result":{"protocolVersion":"2024-11-05","capabilities":{"tools":{}},"serverInfo":{"name":"orangerail","version":"0.1.0"}},"js

[Read the thread](https://github.com/KimHyeongRae0/orangerail/issues/163) · 2026-08-04 · closed · 0 comments

### ONT-102: The README nav line shows raw HTML entities off GitHub

## Problem

The README's nav line separates its five links with ` · `. GitHub resolves the entity;
a renderer that escapes ampersands first does not — and one is now showing it to strangers.

```console
$ curl -sL https://glama.ai/mcp/servers/KimHyeongRae0/orangerail | grep -oE '.{40}nbsp.{30}'
<strong>Quickstart</strong> &amp;nbsp;·&amp;nbsp; <a …>What it does not govern</a>

$ curl -sL https://glama.ai/mcp/servers/KimHyeongRae0/orangerail | grep -c nbsp
10

The reader sees this a

Read the thread · 2026-08-04 · closed · 0 comments

ONT-093: The Quickstart cannot reach the write it promises

Problem

#140 put the Quickstart on the first screen. #142 made every examples/ README run as written. Nothing does that for the README's own Quickstart, and following it verbatim from a cold start does not work.

The promised payoff never happens. The Quickstart closes (L191-196) with a human approving a staged delete and the agent's next check_approval executing it. Reproduced against 0.1.2 through a real MCP client:

--- call deleteCustomer {"id":1} ---
Action staged for huma

[Read the thread](https://github.com/KimHyeongRae0/orangerail/issues/152) · 2026-08-03 · closed · 0 comments

### ONT-088: The README's first paragraph promises an OpenAPI path that does not exist in v0

## Problem

`README.md:12`, the third sentence a visitor reads:

> `orangerail init` turns a `prisma/schema.prisma` **or an OpenAPI spec** into an MCP server: a
> `get` and a `list` per object, one action per write with a zod input schema, and nothing else.

Both halves are false for the OpenAPI input. Against the shipped CLI, on a spec with
`components.schemas`, a collection GET, an item GET, a POST and a DELETE:

```console
$ orangerail init --yes --preset approval-for-writes --no-studio
opena

[Read the thread](https://github.com/KimHyeongRae0/orangerail/issues/143) · 2026-08-03 · closed · 0 comments

### ONT-081: Move the rules-file argument out of the README so the install comes first

## Problem

`README.md` is 656 lines and the first command a reader can run is on line 281.

```console
$ grep -n 'npx orangerail init --yes' README.md
281:$ npx orangerail init --yes --preset approval-for-writes --no-studio

Everything above it is argument. 158 of those lines — ### What a rules file already gets you, ### What the tie does not survive, ### The one that survived on its own terms — are one sustained answer to a single question: *why not just write the rules in a `CLAUDE.

Read the thread · 2026-08-02 · closed · 0 comments

Most recent

ONT-079: The Quickstart's prerequisites omit the adapter Prisma 7 requires

Problem

A first-time reader on Prisma 7 who follows the README Quickstart exactly as written meets exit 1 at the first command it asks them to run. Reproduced cold on 2f5d1e3, from pnpm packed 0.1.1 tarballs, in a throwaway project holding a Prisma 7 SQLite schema and nothing else:

$ npx orangerail init --yes --preset approval-for-writes --no-studio
orangerail init: this repo is on Prisma 7+ (@prisma/client 7.9.1 (installed)) and no driver adapter for `sqlite` is installe

[Read the thread](https://github.com/KimHyeongRae0/orangerail/issues/125) · 2026-08-02 · closed · 0 comments

### ONT-074: A row that drifts from its declared schema opens the gate

## Version

`0.1.1` (`062e527`)

## What happened

`packages/core/src/policy/where.ts:23-25` documents the `where` gate as fail-closed:

> a `null`/`undefined` object (target not found) fails closed — we cannot confirm the condition
> holds, so the action is refused (§4.5 secure-by-default).

It fails **closed** on *no row* and **open** on a *wrong row*. Measured on `062e527` against the
repo's own flagship fixture policy (`packages/core/test/fixtures.ts:64`,
`where: { field: 'status', op: 'neq'

[Read the thread](https://github.com/KimHyeongRae0/orangerail/issues/115) · 2026-08-02 · closed · 0 comments

### ONT-071: Two surfaces still render a stored value unguarded, and one tells the agent the wrong thing

## Version

`0.1.1`, on the merge of #104 (ONT-068) and #105 (ONT-069)

## What happened

Two surfaces still render a stored value unguarded. Each was found by a sibling ticket that
stopped at a file it did not own, and named the gap rather than reaching across.

**1. `audit_unrecorded` reaches the agent as `"Unexpected execute result."`**

#105 added an `ExecuteResult` variant at `packages/core/src/lifecycle/engine.ts:105-113` for the
honest outcome *"the side effect landed and nothing about it

[Read the thread](https://github.com/KimHyeongRae0/orangerail/issues/107) · 2026-08-01 · closed · 0 comments

### ONT-067: The Prisma 7 default generator produces a green `init` and an ontology where every tool fails

## Version

`0.1.1` (`752ff7b`)

## What happened

`npx prisma init` on prisma 7.9.1 writes this generator block:

```prisma
generator client {
  provider = "prisma-client"
  output   = "../generated/prisma"
}

prisma generate emits the client into ./generated/prisma and puts nothing into node_modules/@prisma/client. orangerail init then prints its full success banner and exits 0:

✓ scanned your sources — 2 object(s), 6 action(s)
✓ --gate delete: 2 of 6 write action(s) gated
✓ r

[Read the thread](https://github.com/KimHyeongRae0/orangerail/issues/99) · 2026-08-01 · closed · 0 comments

### ONT-061: mcp: publish the action input contract, and name what it refuses

## Version

`main` @ `8af6078` (the unreleased successor to `0.1.0`), on a project generated
by `orangerail init` against a local Postgres.

## What happened

Two things, and they compound into one failure.

**1. The published `inputSchema` erases the type of every OPTIONAL field.**
Verbatim from `tools/list` on a generated project:

```jsonc
createorder_item → {"id":{"type":"string"},"order_id":{"type":"string"},"product_id":{"type":"string"},"qty":{"type":"number"},"unit_cents":{"type":"number

[Read the thread](https://github.com/KimHyeongRae0/orangerail/issues/89) · 2026-07-30 · closed · 0 comments

### ONT-060: Report the MCP servers mounted next to this project

## Problem

Nothing in this product reads any host agent configuration.

```console
$ grep -rn "\.mcp\.json\|claude_desktop_config\|cursor/mcp" packages/*/src/
$ # (nothing)

orangerail init scans data sources — schema.prisma, an OpenAPI spec — and nothing else. So a user can run

$ orangerail init --models customer,order,order_item,product

get exactly the narrow governed surface they asked for, and have their agent's exposure change by exactly zero, because a wide SQ

Read the thread · 2026-07-30 · closed · 0 comments

ONT-056: orangerail init picks a gating posture instead of gating everything

Problem

orangerail init emits policy: { approval: 'required' } on every write action it generates. That reads as the safe default. It is the wrong one, and the reason is not theoretical — it is what an operator does next.

On a six-action schema, nothing an agent calls ever completes. Every create, every update, every delete returns approval_pending and waits for a human. So the first thing anyone does after init is open the generated files and delete the gate from most of them

Read the thread · 2026-07-30 · closed · 0 comments

ONT-057: core: record what a governed write changed from

Problem

An orangerail audit record for a successful write carries the input and the resulting row, and never the prior one. Verbatim from a live run against a real Postgres:

{"phase":"succeeded","action":"updateproduct","input":{"id":"p3","stock":25},
 "result":{"id":"p3","sku":"SKU-CABLE","title":"USB-C cable","price_cents":1500,"stock":25}}

p3.stock was 0 before that call, and nothing on the chain says so.

Two consequences, and the second is worse than the f

Read the thread · 2026-07-30 · closed · 0 comments

The remaining reports are on the project's issue tracker.