Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
6e0cb1f
v0.9.1: cost-per-PR, MCP auto-policy, VS Code panel, soft budget alert
codehippie1 May 28, 2026
10b4829
v0.9.2: integration cookbook, external audit verifier, compliance doc…
codehippie1 May 28, 2026
b73fa91
build: track internal/ as a symlink to the sibling private docs repo
codehippie1 May 29, 2026
7d71108
v0.9.3: Rust 2024 edition, optional build features, SQLite + security…
codehippie1 May 29, 2026
440a200
Pricing overrides + signed cards, graceful degradation, login service
codehippie1 Jun 7, 2026
d51ee88
v0.9.4: pricing overrides + signed cards, graceful degradation, login…
codehippie1 Jun 7, 2026
00acef9
v0.9.5: status-line ribbon + Windows install-service fix
codehippie1 Jun 8, 2026
f52eeac
v0.9.6: burnwall watch — live cross-tool status ribbon
codehippie1 Jun 8, 2026
1dfd2c1
v0.9.7: exfil detection, security digest, MCP PoC corpus, evidence pack
codehippie1 Jun 8, 2026
14e2d15
Iter 1: trust + ROI surfaces (attestations, savings, heartbeat, SECUR…
codehippie1 Jun 8, 2026
8231c65
Iter 2: security depth (destructive cmds, evasion hardening, swarm bu…
codehippie1 Jun 8, 2026
fe84ecc
v0.9.8: savings, signed share card, sidecar, destructive/exfil detect…
codehippie1 Jun 8, 2026
1f06411
ci: regenerate release.yml for build attestations (dist generate)
codehippie1 Jun 8, 2026
e7c5bf3
v0.9.9: burnwall upgrade (alias self-upgrade)
codehippie1 Jun 8, 2026
007734f
upgrade: sweep leftover burnwall.exe.old on next launch (Windows self…
codehippie1 Jun 8, 2026
1a75455
v0.9.10: status-line auto-wiring in init + burnwall uninstall
codehippie1 Jun 8, 2026
bd90942
v0.9.11: subscription headroom, coverage transparency, rule-pack corp…
codehippie1 Jun 9, 2026
427c624
fix(install/ci): match real release artifacts + retry flaky attestation
codehippie1 Jun 9, 2026
80dbd29
v0.9.12: multi-shell routing sync, not-routed status warnings, colori…
codehippie1 Jun 9, 2026
b43492c
fix(ci): allow-dirty=[ci] so dist tolerates the patched release.yml
codehippie1 Jun 9, 2026
3d11ef2
fix(security): scope command-shaped rules to tool-call arguments
codehippie1 Jun 9, 2026
1139aff
fix(cli): tie shell routing lifecycle to the proxy lifecycle
codehippie1 Jun 9, 2026
63ad939
fix(security): scope tool-arg scanning to the latest in-flight tool r…
codehippie1 Jun 10, 2026
df4c82e
feat(pricing): add Claude Fable 5 + Opus 4.8; resolve [1m] variant tags
codehippie1 Jun 10, 2026
485457b
fix(cli): uninstall deletes routing env files and warns about open sh…
codehippie1 Jun 10, 2026
f5240a2
v0.9.13: prose-safe scanning, conversation recovery, routing lifecycl…
codehippie1 Jun 10, 2026
aeb8604
pricing: refresh model catalog to June 2026 rates
codehippie1 Jun 10, 2026
b3cb98b
budget: day/month reset, monthly enforcement, plan-aware caps; loop d…
codehippie1 Jun 10, 2026
f039508
security: scope-by-role scanning + false-positive fixes
codehippie1 Jun 10, 2026
905f136
proxy: upstream timeouts, disconnect-cancel, self-identifying block m…
codehippie1 Jun 10, 2026
0f79165
storage/logscrape: schema versioning, race-safe migrations, off-by-on…
codehippie1 Jun 10, 2026
b9fbb03
mcp/audit: prose-safe scanning, approval-reset UX, key-loss guard, ha…
codehippie1 Jun 10, 2026
178d754
lifecycle/surfaces: dead-proxy safety, PowerShell routing, PID identi…
codehippie1 Jun 10, 2026
acf1d69
tests: torture-proxy suite for streaming/timeout/disconnect
codehippie1 Jun 10, 2026
2d78240
v0.9.14: dogfooding robustness pass — budget reset, loop/security FP …
codehippie1 Jun 10, 2026
80918fd
style: rustfmt pass (2024 style edition) across the workspace
codehippie1 Jun 11, 2026
424799e
security: scope data checks to tool-call args; make blocks self-expla…
codehippie1 Jun 11, 2026
c01af81
proxy/cli: live escape hatch -- burnwall pause / resume / allow-once
codehippie1 Jun 11, 2026
c969521
surfaces: subscriber stays in plan mode; paused chip; honest proxy-down
codehippie1 Jun 11, 2026
63805e1
v0.9.15: version bump, changelog, README false-positive flow
codehippie1 Jun 11, 2026
31c3459
cli/docs: kill-switch advice points at burnwall pause, not the env var
codehippie1 Jun 11, 2026
6c091b0
v0.10.0: security + cost + compliance feature wave, availability hard…
codehippie1 Jun 12, 2026
aad0459
v0.10.0 finalize: status-line context accuracy, honest blocks/alerts,…
codehippie1 Jun 13, 2026
dc71530
cli/editor: native stat-card dashboard across status, doctor, waste, …
codehippie1 Jun 13, 2026
8c77edf
v0.11.0: dashboard polish, cost accuracy + attribution tags, SHA-256 …
codehippie1 Jun 18, 2026
90f53bc
security(destructive): judge recursive-delete per command segment (FP…
codehippie1 Jun 18, 2026
c30a4db
Merge main into release/v0.11.0 to reconcile the release line onto main
codehippie1 Jun 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
name: Bug report
about: Something isn't working as expected
title: ""
labels: bug
assignees: ""
---

<!--
Burnwall stores zero telemetry and is local-only, so we can't see your machine.
The single most useful thing you can attach is a redacted diagnostic bundle:

burnwall doctor --export

It is metadata-only (no prompts, no API keys, no raw paths) and self-scans for
secrets before writing — if anything secret-shaped survived, it refuses to write
rather than risk a leak. Review the file, then paste it below.
-->

## What happened

A clear description of the problem.

## What you expected

What you expected to happen instead.

## Steps to reproduce

1.
2.
3.

## Diagnostic bundle

Paste the output of `burnwall doctor --export` (it's redacted + self-scanned):

```
(paste here)
```

## Environment

- Burnwall version: <!-- `burnwall --version` -->
- OS / arch:
- AI tool(s) involved: <!-- Claude Code, Codex CLI, Aider, … -->

## Anything else

Logs, screenshots, or context. Please don't paste API keys or prompt content —
the `doctor --export` bundle already excludes them.
63 changes: 63 additions & 0 deletions .github/actions/burnwall-scan/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: 'Burnwall Scan'
description: >-
Scan agent config files (CLAUDE.md, .cursorrules, .mcp.json, .claude/ and
friends) for committed credentials and hidden-instruction smuggling, and
upload the findings as SARIF to the repository Security tab.
author: 'Burnwall'
branding:
icon: 'shield'
color: 'orange'

inputs:
paths:
description: 'Space-separated files or directories to scan.'
required: false
default: '.'
all-files:
description: 'Scan every text file in directories, not just known agent configs.'
required: false
default: 'false'
fail-on-findings:
description: 'Fail the job when anything is found (in addition to the SARIF upload).'
required: false
default: 'false'
upload-sarif:
description: >-
Upload the SARIF report to GitHub code scanning. Requires the
`security-events: write` permission on the job. Set to false to only
print findings (and optionally gate via fail-on-findings).
required: false
default: 'true'
burnwall-version:
description: 'Burnwall release to install (for example "0.9.15"). Defaults to the latest release.'
required: false
default: 'latest'

runs:
using: 'composite'
steps:
- name: Install Burnwall
shell: bash
run: |
if [ "${{ inputs.burnwall-version }}" != "latest" ]; then
export BURNWALL_VERSION="${{ inputs.burnwall-version }}"
fi
curl -fsSL https://raw.githubusercontent.com/intbot/burnwall/main/install.sh | sh
echo "$HOME/.local/bin" >> "$GITHUB_PATH"

- name: Scan agent configs
shell: bash
run: |
ARGS=""
if [ "${{ inputs.all-files }}" = "true" ]; then ARGS="$ARGS --all-files"; fi
if [ "${{ inputs.fail-on-findings }}" = "true" ]; then ARGS="$ARGS --fail-on-findings"; fi
# fail-on-findings exits non-zero AFTER writing the SARIF report, so
# the upload step still runs (`if: always()` below) and the Security
# tab gets the findings either way.
burnwall scan ${{ inputs.paths }} --sarif burnwall-scan.sarif $ARGS

- name: Upload SARIF to code scanning
if: ${{ always() && inputs.upload-sarif == 'true' }}
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: burnwall-scan.sarif
28 changes: 28 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,10 @@ jobs:
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BUILD_MANIFEST_NAME: target/distrib/${{ join(matrix.targets, '-') }}-dist-manifest.json
permissions:
"attestations": "write"
"contents": "read"
"id-token": "write"
steps:
- name: enable windows longpaths
run: |
Expand Down Expand Up @@ -144,6 +148,30 @@ jobs:
# Actually do builds and make zips and whatnot
dist build ${{ needs.plan.outputs.tag-flag }} --print=linkage --output-format=json ${{ matrix.dist_args }} > dist-manifest.json
echo "dist ran successfully"
# NOTE: manual patch over the cargo-dist-generated workflow — re-apply
# after `dist generate`. Retries build-provenance attestation up to 3x
# because Sigstore's transparency log intermittently returns a transient
# "InternalError: error fetching tlog entry". Attestation stays MANDATORY:
# the final attempt is not continue-on-error, so a persistent Sigstore
# outage still fails the job (we never ship an un-attested release).
- name: Attest
id: attest1
continue-on-error: true
uses: actions/attest@v4
with:
subject-path: "target/distrib/*${{ join(matrix.targets, ', ') }}*"
- name: Attest (retry 1)
id: attest2
if: steps.attest1.outcome == 'failure'
continue-on-error: true
uses: actions/attest@v4
with:
subject-path: "target/distrib/*${{ join(matrix.targets, ', ') }}*"
- name: Attest (retry 2)
if: steps.attest1.outcome == 'failure' && steps.attest2.outcome == 'failure'
uses: actions/attest@v4
with:
subject-path: "target/distrib/*${{ join(matrix.targets, ', ') }}*"
- id: cargo-dist
name: Post-build
# We force bash here just because github makes it really hard to get values up
Expand Down
45 changes: 45 additions & 0 deletions .github/workflows/scorecard.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# OpenSSF Scorecard — supply-chain health signal for a zero-telemetry tool.
# A local tool can't use product analytics for trust; a published Scorecard +
# the dist-built reproducible release artifacts stand in for it.
name: Scorecard

on:
branch_protection_rule:
schedule:
- cron: "37 4 * * 1" # weekly, Monday
push:
branches: ["main"]

permissions: read-all

jobs:
analysis:
name: Scorecard analysis
runs-on: ubuntu-latest
permissions:
security-events: write # upload SARIF to the Security tab
id-token: write # publish results to the public Scorecard API
steps:
- name: Checkout
uses: actions/checkout@v5
with:
persist-credentials: false

- name: Run analysis
uses: ossf/scorecard-action@v2.4.0
with:
results_file: results.sarif
results_format: sarif
publish_results: true

- name: Upload artifact
uses: actions/upload-artifact@v5
with:
name: scorecard-results
path: results.sarif
retention-days: 5

- name: Upload to code-scanning
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
Loading