OpenAI agent conversations can continue through application-managed history, SDK sessions, server-managed conversation/response identifiers, or serialized run state for interrupted work. Pick one conversation strategy per flow. Approval state is different from a new chat turn: resume the paused run so tools, budgets, and decisions remain connected.
You will choose a continuation model, persist a simple SDK session, and explain how approval checkpoints differ from conversation memory.
Mixing replayed input with server-managed continuation can duplicate context. Document the selected strategy in the conversation record.
session_demo.py:
SQLite is useful for learning and local workloads. Production needs the session backend, concurrency, encryption, retention, and tenancy appropriate to its environment.
When a tool needs approval, the result contains interruptions and resumable state. Store that state securely with business proposal, policy version, budget consumption, expiry, and approver scope. After approval or rejection, resume from the same state—not from a new prompt that says “the user approved.”
Failure injection: Reuse one session across two tenants. Your harness must reject the request before SDK execution. A session identifier is not an authorization boundary.
Implement a session repository interface with optimistic concurrency, tenant-scoped keys, retention metadata, and a test that prevents cross-tenant reuse.