paperclipai/paperclip · error · Error

current CapabilityLiveSessionService requires collaboration-

Error message

current CapabilityLiveSessionService requires collaboration-mode instructions

What it means

The current CapabilityLiveSessionService always injects collaboration-mode instructions, so it cannot honor a request that explicitly opts out. parseEvalSessionRequest throws when input.includeCollaborationModeInstructions is exactly false; undefined (absent) is accepted, but a deliberate false is refused fail-closed.

Source

Thrown at packages/paperclip-runner/src/cli/eval-session-contract.ts:275

  const managedProfile = provider === "claude_managed"
    ? parseManagedProfile(managedProfileInput)
    : undefined;
  const agentCoreProfile = provider === "aws_agentcore"
    ? parseAgentCoreProfile(agentCoreProfileInput)
    : undefined;
  if (provider !== "claude_managed" && managedProfileInput !== undefined) {
    throw new Error("eval-session managedProfile requires provider claude_managed");
  }
  if (provider !== "aws_agentcore" && agentCoreProfileInput !== undefined) {
    throw new Error("eval-session agentCoreProfile requires provider aws_agentcore");
  }
  if (input.nativeResume !== undefined) {
    throw new Error(
      "eval-session nativeResume requires a retained live-session checkpoint",
    );
  }
  if (input.includeCollaborationModeInstructions === false) {
    throw new Error(
      "current CapabilityLiveSessionService requires collaboration-mode instructions",
    );
  }

  const runnerd = object(input.runnerd, "request.runnerd");
  const digest = text(runnerd.sha256, "request.runnerd.sha256");
  if (!/^(?:sha256:)?[a-f0-9]{64}$/i.test(digest)) {
    throw new Error("request.runnerd.sha256 must be a SHA-256 digest");
  }
  const limits = object(input.limits, "request.limits");
  const sessionInput = object(input.session, "request.session");
  const session = sessionInput as unknown as CreateCapabilityLiveSessionInput;
  const model = text(input.model, "request.model");
  if (provider === "claude_managed" && model !== "claude-sonnet-5") {
    throw new Error("Claude Managed evals require exact model claude-sonnet-5");
  }
  if (
    provider === "aws_agentcore" &&

View on GitHub (pinned to 01ad858492)

Solutions

  1. Remove includeCollaborationModeInstructions or set it to true (or just omit it).
  2. If the goal is fewer instructions, achieve it outside the eval-session contract; this service does not support opting out.
  3. If opt-out should exist, extend CapabilityLiveSessionService itself, not just the request.

Example fix

// before
{ "provider": "codex", "includeCollaborationModeInstructions": false, ... }
// after
{ "provider": "codex", ... }
Defensive patterns

Strategy: validation

Validate before calling

function allowsCollaborationOptOut(input) { return input.includeCollaborationModeInstructions !== false; }
if (!allowsCollaborationOptOut(req)) throw new Error("collaboration-mode instructions are mandatory for this service");

Type guard

function acceptsOptOut(input) { return input.includeCollaborationModeInstructions !== false; }

Try / catch

try { return parseEvalSessionRequest(raw); } catch (e) { if (String(e.message).includes("requires collaboration-mode instructions")) { delete raw.includeCollaborationModeInstructions; return parseEvalSessionRequest(raw); } throw e; }

Prevention

When it happens

Trigger: Calling parseEvalSessionRequest with includeCollaborationModeInstructions: false in the eval-session request body for any provider.

Common situations: A generic harness/config builder that serializes an opt-out flag it supports elsewhere but this service does not; trying to slim prompts by disabling collaboration instructions in eval runs; porting a request shape from a different session service that allows the opt-out.

Related errors


AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-09-02). Data as JSON: /api/errors/bd8f99f072f1a883. Report an issue: GitHub.