# Running work

How work moves from prompt to merged change, and the three ways it starts.

Canonical page: https://kortix.com/docs/work

Kortix does work inside a [session](/docs/work/sessions): a branch and a sandbox for one
unit of work. A session ends when its [change request](/docs/work/change-requests) (CR)
merges back to the default branch. This page walks through the loop, then shows the
three ways a session can start.

- [Sessions](/docs/work/sessions): A branch and a sandbox for one unit of work.
- [Change requests](/docs/work/change-requests): The reviewed merge back to the default branch.
- [Runtime](/docs/work/runtime): Env vars, tokens, and the sandbox image a session runs in.

## What happens when a session starts

1. Kortix creates the session row and cuts a branch from the default branch.
   The branch name is the session id.
2. Kortix resolves a sandbox image: the default image, or your own
   `.kortix/Dockerfile` if the manifest declares one.
3. The sandbox boots. Its daemon, `kortix-agent`, clones the repo to
   `/workspace` and starts OpenCode. Session status becomes `running`.
4. The agent works. It reads [secrets](/docs/project/secrets) as environment
   variables, then commits and pushes to the session branch.
5. The agent opens a [change request](/docs/work/change-requests). You review
   it and merge it — the only way work reaches the default branch.

> **Git is the only durable record**
> Stopping a session pauses the sandbox but keeps its files. Deleting a session
> destroys the sandbox for good. Only work committed and pushed to the branch
> survives, and only a merged change request makes it permanent.

## Three ways work runs

A session starts one of three ways.

| Mode | How it works |
|---|---|
| On-demand | You ask in chat and get the result now. |
| Human-assisted | The agent works and checks in with you for the calls that matter. |
| Automated | A [trigger](/docs/connect/triggers) — a schedule or webhook — starts the session end to end. |

## Related

- [Projects](/docs/project): A git repo with a manifest.
- [Agents](/docs/project/agents): A markdown persona with scoped tools.
- [Models](/docs/project/models): Which model a session uses, and who pays.
- [Triggers](/docs/connect/triggers): Schedules and webhooks that start sessions.
- [Connectors](/docs/connect/connectors): Scoped reach into external apps.
- [Slack & channels](/docs/connect/slack): Chat surfaces that start sessions.
- [Computers](/docs/connect/computers): Machines distinct from session sandboxes.
- [Accounts](/docs/accounts): Who owns projects, and who can access them.
