Guide contents

Settings

Open the Settings dialog with Mod+,, the gear button in the status bar, or the command palette ("Settings…"). The dialog has nine sections — Appearance, Diff, Keyboard, Git, Hosting, Integrations, AI, Updates, and Privacy. Most changes apply live; git identity and Azure DevOps Server profiles have explicit save actions.

The sidebar is a keyboard-navigable list: / move between sections, Home/End jump to the first or last, and Escape closes the dialog.

Appearance#

Diff#

Diff options come with a live preview — a sample diff at the bottom of the section re-renders as you change settings. The preview and every diff pane follow Strand's resolved Light, Dark, or System appearance, even when an explicit choice differs from the operating-system theme.

Keyboard#

Every global shortcut in Strand is rebindable here. Shortcuts are grouped by category — General, Navigation, Git, Repository, Appearance — and each row shows the command label with its current binding.

Rebindable defaults include the command palette (Mod+K), views Mod+1Mod+7, push/pull/fetch/sync, the theme toggle, the repo switcher (Mod+E), and the AI commit-message suggestion (Mod+Shift+M). The full table lives in Keyboard and palette.

Below the rebindable list, a Context shortcuts card documents the fixed, surface-local keys — things like F6 to focus Work tabs, Mod+Enter to commit from the message box, Mod+F to search within the current file or diff, / to search commits, and j/k to step files in the Review queue and Local Changes. These are not rebindable; the card is a reference so you can look them up without leaving Settings.

Git#

Everything else about git — credentials, SSH keys, commit signing — is inherited from your existing git setup: network operations (push, pull, fetch, clone) go through your system git, and when commit.gpgSign is on, commits do too — picking up your signing config and running your pre-commit / commit-msg hooks, just like plain git commit. Unsigned commits (the default) are written in-process and do not run commit hooks. There is nothing to configure in Strand for those.

Hosting#

Hosting is organized into GitHub, Azure DevOps, and Azure DevOps Server accordions. Each summary keeps its connection state visible while the details are collapsed. GitHub shows the account returned by gh; Azure DevOps shows the account returned by az and also requires the azure-devops extension. Refresh reruns these bounded CLI checks. Strand does not read or store either CLI's token.

Azure DevOps Server 2020+ support is optional. Turn on On-premises pull requests to download the latest signed strand-azdo helper whose protocol is compatible with this Strand version. While the helper is being fetched and verified, the status row, install button, and progress bar show that the download is still running. The status row shows the installed helper and protocol versions; Retry installation replaces it only after signature and SHA-256 verification. Disabling keeps profiles and credentials. Remove helper and credentials is confirmed separately and removes the binary, profiles, imported certificates, and vault entries.

Each server profile has a display name and an HTTPS collection URL such as https://server/tfs/DefaultCollection. For a standard on-prem HTTPS clone URL, the collection field is optional: leave it blank and Strand derives and saves the collection boundary from the active repository's preferred Git remote. If no standard Server remote can be identified, Strand asks for the URL. It later derives the project and repository from each repository's Git remote. No per-repository project setting is required. Additional HTTPS/SSH prefixes are optional for server aliases; the longest match wins and ambiguous matches are rejected. Cloud dev.azure.com and visualstudio.com addresses are not accepted here; Azure DevOps Services continues to use az.

Choose Personal access token on macOS, Windows, or Linux. The PAT needs at least Azure Code: Read & write scope and is stored only in Keychain, Windows Credential Manager, or Linux Secret Service. It is never written to Strand settings. A PEM CA certificate can be imported for a private PKI; Strand copies and validates it rather than retaining the external path. If PAT login fails, check its scope and expiry and make sure IIS Basic Authentication is disabled, because enabling it prevents Azure DevOps Server PAT authentication. On Windows, Windows identity (Negotiate / NTLM) uses the current login and the Windows trusted-root store instead of a PAT or profile CA. Use Test on a saved profile before opening its pull requests. The Server accordion is green when the verified helper is installed and at least one profile has a stored PAT or selects Windows authentication; this is configuration readiness, while Test performs the actual server connection.

Terminal#

Configure Work's embedded terminals separately from external applications.

Integrations#

AI#

Strand can suggest a commit message from staged changes, or all unstaged changes when nothing is staged, and draft pull-request text from committed branch changes. It has no API key of its own — suggestions run through a CLI you already have, on your own subscription. Auth and billing stay entirely in the vendor's CLI; Strand only orchestrates it.

In a packaged desktop build, PATH is recovered from the interactive login shell on macOS/Linux and from the persisted user and machine environment on Windows, then merged with the environment inherited at launch. This finds Homebrew, local-bin, npm, WinGet, and version-manager installs and also supplies runtime commands such as node to npm-installed CLIs. Restart Strand after changing shell startup files or installing a CLI; use the custom path only when you need to override automatic resolution.

To get a commit suggestion, stage some changes and press the sparkle button next to the commit subject field in Local Changes, use Mod+Shift+M, or run "Suggest commit message" from the palette. To draft a PR, use Fill with Codex/Claude Code in the Create PR dialog. If the CLI isn't installed or you aren't signed in, the action stays clickable and the hint appears inline. Sign-in starts the provider's browser or CLI flow, and once you complete it you run the action again. If a CLI launcher is present but its packaged executable is broken, Strand keeps that distinct from “signed out” and shows a repair hint beside the form rather than claiming that sign-in opened. Generation failures use concise hints for recognized provider limits, model problems, timeouts, and connection errors. Strand never displays a raw vendor CLI session transcript because it can contain the prompt, repository paths, and patch content.

Strand never runs an automatic provider-status subprocess from Local Changes. Provider checks remain explicit here. Writing generation is user-initiated, uses bounded local context, and does not add Strand telemetry or persist prompts, outputs, or sensitive classifications.

Updates#

The in-app updater covers the macOS app, direct Windows MSI installs, and the Linux AppImage; .deb and .rpm installs are not covered — update them by downloading the new release from GitHub Releases. Microsoft Store MSIX installations instead check Microsoft Store on launch and from this section. When an update is available, Strand notifies you and offers Open Microsoft Store; Microsoft Store remains responsible for downloading and installing the package.

Privacy#

Strand has no telemetry. Reports are user-mediated and open a pre-filled GitHub issue in your browser for review before anything is submitted:

Crashes are always logged locally regardless of the toggle; the section shows the crash-log path and notes that logs can include repository paths, so you can review before sharing.


All settings persist across launches, along with the rest of your session — open tabs, pane sizes, per-repo diff layouts, and workspaces. For the full shortcut reference, see Keyboard and palette.