Skip to main content

sclaude

Opinionated Claude Code wrapper for long-running sessions. A Cartage OSS contribution.

What it does:

  • Launches claude with --dangerously-skip-permissions so you never see a permission prompt.
  • Appends a strict non-destructive guardrails system prompt so Claude self-imposes the safety checks the permission gate would have enforced.
  • Runs a context-window sidecar. At ~70% context, it asks Haiku to write a handoff doc and auto-swaps the session: kills the running claude, respawns it fresh, and types /resume <doc> for you. No mid-flow compacting, no lost state.
  • Bundles a Claude Code status line showing context %, 5-hour and 7-day usage buckets, and a pace meter.
  • Spawns git worktrees with sclaude <name> — one command, branch + tree
    • wrapped claude.

Install

pipx install sclaude

Requires Claude Code installed and authed (claude login) — sclaude uses your existing OAuth session, no API key needed.

Quick start

# launch claude in current cwd (no worktree)
sclaude run

# spawn a worktree at <repo>/.worktrees/my-feature and launch claude in it
sclaude my-feature
sclaude worktree my-feature           # explicit form

# remove worktrees whose branches are merged / clean
sclaude prune                          # dry run
sclaude prune --apply                  # actually remove

Any argument that isn't a known subcommand is treated as a worktree name. So sclaude AE-1234 ≡ sclaude worktree AE-1234.

Worktree paths

Default: <repo>/.worktrees/<name>. Override with --path:

sclaude my-feature --path ~/scratch/my-feature

Branch defaults to the worktree name and forks off the detected default branch (origin/main → origin/master → main → master). Override with --branch / --base.

Context threshold

Default fires at 70% of the 200k context window. Override:

sclaude --threshold 0.65

To disable the PTY auto-swap and fall back to a banner-only handoff:

sclaude --no-auto-handoff

Status line

On first launch, sclaude composes a settings JSON that points Claude Code's statusLine at the bundled statusline.sh (cached at ~/.cache/sclaude/statusline.sh). Your existing ~/.claude/settings.json is preserved — only the statusLine key is added.

The bar shows: context fill % • pace (7d burn-rate vs sustainable) • 5h and 7d usage buckets when either crosses 50%.

Guardrails

See src/sclaude/guardrails.md. Summary: no force-push, no destructive git/SQL, no editing CI/secrets, always work in a worktree, commit per chunk, confirm before irreversible ops.

Architecture

sclaude <name>
├── git worktree add <repo>/.worktrees/<name>
├── spawn watcher.py (subprocess, polls ~/.claude/projects/<cwd>/*.jsonl)
└── pexpect-driven PTY around `claude --dangerously-skip-permissions
                                       --append-system-prompt <guardrails>
                                       --settings <bundled-statusline.json>`

When the watcher detects context ≥ threshold, it calls claude -p --model haiku to write a handoff doc under ~/.claude/handoffs/. The PTY runner spots the new file, terminates the current claude, respawns it, and pre-types /resume <doc> as the first user input.

Acknowledgements

Built at Cartage for our own non-technical AO users running multi-day Claude Code sessions. Released as a standalone OSS package in the hope it's useful to anyone else who hates compaction.

Metadata

Release files for sclaude 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sclaude 0.4.0
File Size Uploaded
sclaude-0.4.0.tar.gz 18.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sclaude 0.4.0
File Interpreter ABI Platform
sclaude-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 40.5 kB

Release files / sclaude-0.4.0.tar.gz

Download URL sclaude-0.4.0.tar.gz
Size 18.2 kB
Tags Source
SHA-256 checksum
How to use checksums
d10d19d206d3fcf7171e5d90a8c2a29dde55cec5d8d138b4fb69a4da1ad811ec
BLAKE2b-256 checksum
How to use checksums
1bc8aa86f3e715b058a087e2d67b76c8c59df89ff0072cf5b02fe811bde9eed9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.11 {"installer":{"name":"uv","version":"0.11.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / sclaude-0.4.0-py3-none-any.whl

Download URL sclaude-0.4.0-py3-none-any.whl
Size 22.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e98daa5374ab5cdd1b11624cead37eac739f4e4b6a2a2387ff886f16e2482488
BLAKE2b-256 checksum
How to use checksums
69e27103359085ac395898f6ee98529e7195de74b72339230e6c48b35ef72119
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.11 {"installer":{"name":"uv","version":"0.11.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page