If the agent's program quits without finish_session, SyncNow records that the session ended without a close, and the session then expires on its own.
The SyncNow app keeps the session alive only while the agent is actually working: after 45 minutes without a single call from the agent, its expiry is no longer extended. Every session also has an absolute deadline, fixed when it opens, that nothing can move. When the session expires, every capability tied to it stops working and SyncNow deletes its folder in the local transfer area.
Until it is closed, the project knows what the session did but not why: its file changes are recorded, while its summary, risks and next action are missing. If the agent calls finish_session later on the same session, SyncNow still stores the close and records it as late. When you open the project again, your agent is also shown your earlier sessions there that changed files and left nothing, with a marker its own closing note can use to attach the missing explanation.