Workflow mode: PRs, or just crack on
Pull requests are a collaboration tool. When you're the only person on a repo — a vibe-coding session, an early prototype, a weekend project — opening a PR means carving a branch, pushing it, and merging it with the same hand that wrote the code. That's ceremony standing between an edit and main, and nothing on the other side of it.
So kiln reads the room. Each project resolves to one of two workflow modes:
- Pull request — the full lifecycle. The Changes view's prominent verb is Open PR: carve a topic branch off
main, push it, and open the PR throughgh. The right default the moment a second person is on the repo, or a PR is already open. - Direct — just crack on. The prominent verb becomes Push, straight to the remote (
main, in the common case): no topic branch, nogh pr create. Opening a PR stays one quiet click away for the moment you do want a review.
This only changes what your publish button does. Squad agents still propose to buffers and never touch disk, in either mode — direct mode doesn't loosen anything there.
How the mode is picked
The mode is resolved, not stored. With nothing pinned, kiln looks at the repo:
- One recent author (or a fresh repo with no commits yet) — reads as solo.
- A remote to push to — direct-to-main needs somewhere to go.
- No open pull requests — an open PR is a clear sign the project already PRs.
Solo, with a remote, and no open PRs gets direct. Anything else gets pull request. Detection only ever supplies a default; it never prompts and never overrides a choice you've made. If gh isn't installed or signed in, that reads as "no open PRs" — which is the right call for someone who hasn't set gh up.
Pinning it
Detection is a default, not a verdict. Set workflowMode in any .kiln config layer to fix it:
{
"workflowMode": "direct"
}
"direct" (or solo, main) cracks on; "pr" (or pull-request) keeps the full PR flow. A pinned value always wins, and kiln skips the git and gh probing entirely. An unrecognised value falls back to auto-detection with a config warning.