paperclipai/paperclip · error

Execution workspace not found

Error message

Execution workspace not found

What it means

404 sentinel passed to getAccessibleResource: the execution workspace lookup by id found no row, so the referenced workspace does not exist or is out of the actor's reach.

Source

Thrown at server/src/routes/execution-workspaces.ts:171

    res.json(overview);
  });

  router.get("/execution-workspaces/:id", async (req, res) => {
    const id = req.params.id as string;
    const workspace = await getAccessibleResource(req, res, svc.getById(id), "Execution workspace not found");
    if (!workspace) return;
    if (!(await assertExecutionWorkspaceReadAllowed(req, res, workspace.companyId))) return;
    res.json(workspace);
  });

  router.get("/execution-workspaces/:id/close-readiness", async (req, res) => {
    const id = req.params.id as string;
    const workspace = await getAccessibleResource(req, res, svc.getById(id), "Execution workspace not found");
    if (!workspace) return;
    if (!(await assertExecutionWorkspaceReadAllowed(req, res, workspace.companyId))) return;
    const readiness = await svc.getCloseReadiness(id);
    if (!readiness) {
      res.status(404).json({ error: "Execution workspace not found" });
      return;
    }
    res.json(readiness);
  });

  /**
   * Mint a single-use workspace login handoff for the calling board user.
   *
   * Board-only: the ticket carries a user identity, so an agent key — which has
   * no user to sign in — must never be able to mint one. Nothing in the request
   * body influences what the ticket is bound to; only the landing path is taken
   * from the caller, and it is reduced to a same-origin path before signing.
   */
  router.post("/execution-workspaces/:id/login-handoff", async (req, res) => {
    const id = req.params.id as string;
    assertBoard(req);
    const workspace = await getAccessibleResource(req, res, svc.getById(id), "Execution workspace not found");
    if (!workspace) return;

View on GitHub (pinned to a7e689b3c3)

Solutions

  1. Verify the id in the request path or body refers to an existing record in this company; re-list the parent collection to get a valid id.
  2. Check that the record was not deleted or archived, and that the request is scoped to the correct companyId.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at server/src/routes/execution-workspaces.ts:136 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of paperclipai/paperclip@a7e689b3c3 (2026-08-18). Data as JSON: /api/errors/abb4bbafa53ee250. Report an issue: GitHub.