AltimateAI / AltimateAI/altimate-code

Prompt retry after a client timeout has no idempotency key

Open
#1,222 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
811
Forks
134
Avg merge
3d 2h
Merged PRs (30d)
50

Description

Deferred from the v0.10.0 release review. Self-disclosed.

A prompt retried after a client-side timeout or connection reset carries no idempotency key (`packages/opencode/src/cli/cmd/run.ts`). If the server accepted the request and only the response was lost, the retry is executed a second time.

For a data tool this is not merely a duplicated read: a `sql_execute` carrying a mutating statement can run twice against a live warehouse. The exposure is largest under automation that layers its own retries on top.

Fixing this needs a server-side idempotency contract, not a client-only change.

Contributor guide

Open the contributing guide

Research direction

Start by reading packages/opencode/src/cli/cmd/run.ts and tracing how a prompt is retried after a client timeout or connection reset. The issue requires an agreed server-side idempotency contract; done means an accepted mutating request cannot execute twice when its response is lost and the client retries.

Written by the indexing model from the issue text.

Assessment

Tech stack
sql, typescript
Domain
api, backend, cli, data-engineering, databases
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.