paperclipai/paperclip · error · Error
Everything in the company is only available on the default w
Error message
Everything in the company is only available on the default wiki space.
What it means
Thrown by validatePaperclipIngestionProfile() inside the per-scope loop when a scope of kind company_all is configured on a space whose slug is not DEFAULT_SPACE_SLUG ("default"). company_all ingests every issue in the company, which is only permitted on the default wiki space — custom spaces must scope explicitly (selected_projects / root_issues).
Source
Thrown at packages/plugins/plugin-llm-wiki/src/wiki/core.ts:999
space: WikiSpace;
profile: PaperclipIngestionProfileV1;
}) {
const policy = evaluatePaperclipProfilePolicy({
space: input.space,
profile: input.profile,
purpose: "profile_update",
requireEnabledProfile: input.profile.enabled && input.space.slug !== DEFAULT_SPACE_SLUG,
});
if (!policy.allowed) throw new Error(policy.message);
if (input.profile.enabled && input.profile.sourceScopes.length === 0) {
throw new Error("Paperclip ingestion profile must include at least one source scope before it can be enabled.");
}
if (input.profile.sourceScopes.length > MAX_PAPERCLIP_INGESTION_PROFILE_SOURCE_COUNT) {
throw new Error(`Paperclip ingestion profile sources exceed the hard cap of ${MAX_PAPERCLIP_INGESTION_PROFILE_SOURCE_COUNT}.`);
}
for (const scope of input.profile.sourceScopes) {
if (scope.kind === "company_all" && input.space.slug !== DEFAULT_SPACE_SLUG) {
throw new Error("Everything in the company is only available on the default wiki space.");
}
if (scope.kind === "selected_projects") {
if (scope.projectIds.length > MAX_PAPERCLIP_PROFILE_SELECTED_PROJECTS) {
throw new Error(`selected_projects exceeds the hard cap of ${MAX_PAPERCLIP_PROFILE_SELECTED_PROJECTS}.`);
}
for (const projectId of scope.projectIds) {
const project = await ctx.projects.get(projectId, input.companyId);
if (!project) throw new Error(`Project belongs to another company or does not exist: ${projectId}`);
}
}
if (scope.kind === "root_issues") {
if (scope.issueIds.length > MAX_PAPERCLIP_PROFILE_ROOT_ISSUES) {
throw new Error(`root_issues exceeds the hard cap of ${MAX_PAPERCLIP_PROFILE_ROOT_ISSUES}.`);
}
for (const issueId of scope.issueIds) {
const issue = await ctx.issues.get(issueId, input.companyId);
if (!issue) throw new Error(`Issue belongs to another company or does not exist: ${issueId}`);
}View on GitHub (pinned to 67001ec6eb)
Solutions
- Move the company_all scope to the default space's profile, OR
- Replace company_all on the custom space with explicit scopes (selected_projects and/or root_issues).
- In the UI, hide/disable the 'Everything in the company' option for non-default spaces.
Example fix
// before (custom space "team-a")
profile.sourceScopes = [{ kind: "company_all" }]; // throws
// after
profile.sourceScopes = [{ kind: "selected_projects", projectIds: ["p1","p2"] }];
// or move company_all to the default space's profile. Defensive patterns
Strategy: validation
Validate before calling
const DEFAULT_SPACE_SLUG = "default";
function assertCompanyAllOnlyOnDefault(scope: { kind: string }, spaceSlug: string) {
if (scope.kind === "company_all" && spaceSlug !== DEFAULT_SPACE_SLUG) {
throw new Error("company_all is only allowed on the default space.");
}
} Type guard
function isCompanyAllAllowed(scope: { kind: string }, spaceSlug: string): boolean {
return scope.kind !== "company_all" || spaceSlug === "default";
} Try / catch
try {
await validatePaperclipIngestionProfile(ctx, { companyId, space, profile });
} catch (err) {
if (err instanceof Error && err.message === "Everything in the company is only available on the default wiki space.") {
// replace company_all with selected_projects/root_issues, or move to default space
} else throw err;
} Prevention
- Hide the 'Everything in the company' option for non-default spaces in the UI.
- Use selected_projects or root_issues for custom spaces.
- Validate scope kind against space slug at the API boundary.
When it happens
Trigger: Adding a { kind: "company_all" } scope to a profile on a custom (non-default) space. Copying a default-space profile to a team space without editing scopes.
Common situations: User expects 'everything in the company' on a team-specific space. Profile template that defaults to company_all reused across spaces. Misunderstanding that company_all is reserved for the default space.
Related errors
- Paperclip source scope must specify either projectId or root
- ${policy.message}
- Paperclip ingestion profile must include at least one source
- Paperclip ingestion profile sources exceed the hard cap of $
- ${decision.message}
AI-assisted analysis of paperclipai/paperclip@67001ec6eb (2026-08-12).
Data as JSON: /api/errors/e53c0bb5d3a249e4.
Report an issue: GitHub.