Skip to content

fix(anthropic): preserve rendered-context provenance #227

Description

@alteixeira20

Problem

PXPipe can render static Anthropic system/configuration context into image blocks attached to the first user message because Anthropic system blocks cannot contain images.

The rendered image banner currently tells Claude to follow those user-role images as operating instructions. In real Claude Code usage this can be interpreted as apparent prompt injection / reasoning-extraction framing and cause a false refusal, even though the content originated from the legitimate request.

Expected behavior

PXPipe should preserve truthful provenance when relocating trusted configuration across modality/role boundaries:

  • rendered image framing should be descriptive, not role-elevating;
  • the actual system field should state that PXPipe produced those images from the request's configuration;
  • Claude Code's preserved identity must remain first;
  • tool schemas, request content, cache semantics, and unrelated providers must remain unchanged.

Observed validation

After applying the fix locally:

  • focused Anthropic provenance/safety/cache regressions pass;
  • production dependency audit passes;
  • TypeScript typecheck passes;
  • full test suite passes;
  • build and command-entrypoint smoke checks pass;
  • a freshly rebuilt/restarted PXPipe daemon works correctly with Claude without the previous false refusal.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions