Skip to content

bug(prompt): with the claude-bridge provider the injected harness never reaches the model, so ODD is silently replaced by the stale gentle-ai skill #1485

Description

@Gefermanpernia

Before submitting

  • I searched open and closed issues and did not find a report of this problem.
  • I reviewed this report and removed credentials, tokens, private paths, hostnames, and other sensitive data.

Problem

When Pi runs with the claude-bridge provider (pi-claude-bridge), none of the gentle-pi harness text reaches the model. This covers the ODD protocol, the identity contract, the persona, the RDD status line, and the research capabilities block. The session looks normal, and gentle-pi tools such as subagent_run, gentle_review, and orchestrator_* all work. The model simply never receives "Default workflow: Organic Driven Development (MANDATORY)".

Root cause:

  • gentle-pi injects its harness by returning systemPrompt: event.systemPrompt + gentlePrompt + … from before_agent_start (extensions/gentle-ai.ts, around line 9156; buildGentlePrompt inlines assets/orchestrator.md).
  • pi-claude-bridge 0.8.0 does not forward that assembled prompt. It records event.systemPromptOptions and sends Claude Code the claude_code preset, appending only the portable parts: context files, the skills block, customPrompt, and appendSystemPrompt (src/prompt-capture.ts, projectCapture; src/index.ts, systemPrompt: { type: "preset", preset: "claude_code", append }).
  • Anything an extension appends through the before_agent_start return value is dropped without any warning. A bridge comment suggests this is deliberate: shipping Pi's harness verbatim trips Anthropic's third-party plan-eligibility check.

Impact: the only gentle-pi guidance that survives is the skills block. In that block, skills/gentle-ai/SKILL.md still says large / ambiguous / risky → SDD and never mentions ODD (see #1085). Under claude-bridge, that stale skill becomes the sole workflow contract. In my session, the agent answered "apply ODD" by creating a full OpenSpec/SDD change (proposal, spec, design, tasks, apply-progress). It could not even recognize the term ODD without searching the package on disk.

Steps to reproduce

  1. Install gentle-pi together with pi-claude-bridge, and set defaultProvider: "claude-bridge" in the Pi agent settings.json.
  2. Start a primary session and ask: "What is your default workflow? Quote any 'Organic Driven Development' instruction you received."
  3. The model has no ODD instruction and no el Gentleman identity contract. It reports a Claude Code system prompt plus the skills list. Ask it to "apply ODD" and it either guesses (for example, reads it as a typo for SDD) or falls back to the gentle-ai skill's SDD routing.
  4. Compare with any non-bridge provider, where the same prompt returns the injected ODD protocol.

Expected and actual behavior

Expected: the harness (ODD default, identity, persona, RDD status, research block) reaches the model on every supported provider. If a provider cannot carry extension-injected prompt text, gentle-pi detects this and either uses a channel that provider forwards (for example appendSystemPrompt, a context file, or the skills block) or at least warns visibly that the harness is inactive.

Actual: under claude-bridge, the injected harness is silently dropped. Tools stay available, so nothing looks broken. The model follows the stale gentle-ai skill (#1085) and routes explicit ODD requests into SDD.

gentle-pi version

3.7.0 (pi-claude-bridge 0.8.0)

Pi version

0.87.1

Operating system

macOS

Relevant logs or error output (optional)

settings.json: defaultProvider = "claude-bridge", defaultModel = "claude-opus-5-5"
skills/gentle-ai/SKILL.md: 0 mentions of "ODD"/"Organic", 5 of "SDD"/"OpenSpec"
assets/orchestrator.md: contains the ODD protocol (injected via before_agent_start, never forwarded)
pi-claude-bridge src/index.ts: systemPrompt: { type: "preset", preset: "claude_code", append: <contextFiles + skills + custom + appendSystemPrompt> }

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    status:approvedIssue approved by maintainer; PR may be opened

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions