paperclipai/paperclip · error · Error
Source and target Paperclip configs are the same. Choose dif
Error message
Source and target Paperclip configs are the same. Choose different --from/--to values.
What it means
Thrown by runWorktreeReseed after resolving source and target when both config paths are identical. Reseeding an instance from itself is destructive and pointless, so it is rejected. Distinct from the merge-history variant (245) because reseed accepts --from-config/--from-data-dir/--from-instance in addition to --from, so the message references '--from/--to values' broadly.
Source
Thrown at cli/src/commands/worktree.ts:3410
} finally {
await targetHandle.stop();
await sourceHandle.stop();
}
}
async function runWorktreeReseed(opts: WorktreeReseedOptions): Promise<void> {
const seedMode = opts.seedMode ?? "full";
if (!isWorktreeSeedMode(seedMode)) {
throw new Error(`Unsupported seed mode "${seedMode}". Expected one of: minimal, full.`);
}
const targetEndpoint = opts.to
? resolveWorktreeEndpointFromSelector(opts.to, { allowCurrent: true })
: resolveCurrentWorktreeEndpoint();
const source = resolveWorktreeReseedSource(opts);
if (path.resolve(source.configPath) === path.resolve(targetEndpoint.configPath)) {
throw new Error("Source and target Paperclip configs are the same. Choose different --from/--to values.");
}
if (!existsSync(source.configPath)) {
throw new Error(`Source config not found at ${source.configPath}.`);
}
const targetConfig = readConfig(targetEndpoint.configPath);
if (!targetConfig) {
throw new Error(`Target config not found at ${targetEndpoint.configPath}.`);
}
const sourceConfig = readConfig(source.configPath);
if (!sourceConfig) {
throw new Error(`Source config not found at ${source.configPath}.`);
}
const targetPaths = resolveWorktreeReseedTargetPaths({
configPath: targetEndpoint.configPath,
rootPath: targetEndpoint.rootPath,
});View on GitHub (pinned to 67001ec6eb)
Solutions
- Point --from / --from-config / --from-data-dir / --from-instance at a different source instance.
- Set --to explicitly to the worktree you want to overwrite, distinct from the source.
Example fix
// before paperclipai worktree reseed // after paperclipai worktree reseed --from-config ~/.paperclip/instances/default/config.json --to /path/to/worktree --seed-mode full
Defensive patterns
Strategy: validation
Validate before calling
import path from "node:path";
function validateReseedDistinct(sourceConfigPath: string, targetConfigPath: string): void {
if (path.resolve(sourceConfigPath) === path.resolve(targetConfigPath)) {
throw new Error("Source and target Paperclip configs are the same. Choose different --from/--to values.");
}
} Prevention
- Always specify --to explicitly when running reseed from inside the source instance.
- Derive --from-config from a different instance id than the target's PAPERCLIP_INSTANCE_ID.
When it happens
Trigger: Calling `worktree reseed` where the resolved source config path equals the resolved target config path: e.g. --from current --to current, or --from-config pointing at the target's own config.json, or --from-instance default where the target IS the default instance.
Common situations: A developer runs reseed without flags from inside the only instance (both default to current). Or they pass --from-config with a path that, after resolution, is the target config.
Related errors
- Use either --from <worktree> or --from-config/--from-data-di
- Source and target Paperclip configs are the same. Pass --fro
- Unsupported seed mode "${seedMode}". Expected one of: minima
- Worktree config already exists at ${paths.configPath} or ins
- Worktree selector cannot be empty.
AI-assisted analysis of paperclipai/paperclip@67001ec6eb (2026-08-12).
Data as JSON: /api/errors/5f385a0fcc8b6ab2.
Report an issue: GitHub.