deepseek-ai/deepseek-harness · error · TerminalError
FOREIGN_SESSION
FOREIGN_SESSION
Error message
PTY session ${id} belongs to another agent What it means
Error "PTY session ${id} belongs to another agent" thrown in deepseek-ai/deepseek-harness.
Source
Thrown at packages/terminal/terminal/src/index.ts:390
}
private async abortPendingSpawns(owner: Agent | undefined, reason: TerminalError): Promise<void> {
const pending = owner === undefined
? [...this.pendingSpawns.values()].flatMap(owned => [...owned])
: [...(this.pendingSpawns.get(owner) ?? [])]
for (const spawn of pending) spawn.controller.abort(reason)
await Promise.all(pending.map(spawn => spawn.settled))
const failures = pending.flatMap(spawn => spawn.cleanupFailure === undefined ? [] : [spawn.cleanupFailure.error])
for (const spawn of pending) this.removePendingSpawn(spawn)
if (failures.length > 0) {
throw new AggregateError(failures, 'failed to roll back unpublished PTY setup')
}
}
private expectOwned(owner: Agent, id: TerminalSessionId): SessionRecord {
const record = this.sessions.get(id)
if (record === undefined) throw new TerminalError(`unknown PTY session ${id}`, 'NO_SESSION')
if (record.owner !== owner) throw new TerminalError(`PTY session ${id} belongs to another agent`, 'FOREIGN_SESSION')
return record
}
private snapshot(record: SessionRecord): TerminalSessionSnapshot
private snapshot(record: SessionRecord, motd: string): TerminalSpawnResult
private snapshot(record: SessionRecord, motd?: string): TerminalSpawnResult | TerminalSessionSnapshot {
return {
sessionId: record.id,
...record.name !== undefined ? { name: record.name } : {},
type: record.type,
...record.session.pid !== undefined ? { pid: record.session.pid } : {},
status: record.session.status(),
...motd !== undefined ? { motd } : {},
}
}
private async abortAndClose(owner: Agent | undefined, abortReason: TerminalError, closeReason: string): Promise<void> {
const failures: unknown[] = []View on GitHub (pinned to b150a551b8)
Solutions
- Operate only on PTY sessions owned by the calling agent.
When it happens
Trigger: Thrown at packages/terminal/terminal/src/index.ts:390 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of deepseek-ai/deepseek-harness@b150a551b8 (2026-08-24).
Data as JSON: /api/errors/44be9e60986db595.
Report an issue: GitHub.