Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
303 commits
Select commit Hold shift + click to select a range
4d5c2fc
refactor(npx): use shared runner::run_passthrough_cmd helper
tmchow Apr 23, 2026
614e562
refactor(npx): consolidate npm/npx execution in npm_cmd
tmchow Apr 25, 2026
2ad1579
refactor(runner): drop unused run_passthrough_cmd helper
tmchow Apr 25, 2026
021827c
fix(grep): adjust the command to fall through if the output would alr…
JBF1991 Apr 22, 2026
2d031f3
fix(discover): encode '.' as '-' in project path slug
niklasmarderx Apr 23, 2026
73a05c3
fix(discover): also encode '_', '\', and non-ASCII chars in project p…
niklasmarderx Apr 25, 2026
323cc3d
refactor(discover): extract SANITIZED_CHARS constant in encode_projec…
Apr 26, 2026
98fe82d
refactor(init): introduce InitContext and centralize dry-run footer
hed0rah Apr 26, 2026
2f185a4
docs(init): document --dry-run in quick-start guide
hed0rah Apr 26, 2026
81a1be6
fix(stream): route to respective fd
aeppling Apr 28, 2026
e6c2523
fix(benchmark): capture all fd for stream cmd benchmark
aeppling Apr 28, 2026
c590bd6
fix(benchmark): benchmark capture all fd only stream
aeppling Apr 28, 2026
b855891
refactor(git): Fix stash status detection for all cases
KuSh Apr 28, 2026
605e335
Merge pull request #1579 from rtk-ai/fix/stream-stderr-routing
aeppling Apr 29, 2026
d327724
fix(stream): add semgrep flag for sh tests
aeppling Apr 29, 2026
7cfcdbe
Merge pull request #1611 from rtk-ai/fix/remove-sh-from-tests
aeppling Apr 29, 2026
705ea23
Merge pull request #1439 from rtk-ai/develop
aeppling Apr 29, 2026
d1467e2
hotfix(cicd): add git app token for release please
aeppling Apr 29, 2026
edfd53c
Update cd.yml
aeppling Apr 29, 2026
c906873
Merge pull request #1628 from rtk-ai/hotfix/cicd/use-git-app
aeppling Apr 29, 2026
8b15cd8
Merge pull request #1629 from rtk-ai/develop
aeppling Apr 29, 2026
9d18229
hotfix(cicd): authorize dispatch for release please + git app for bump
aeppling Apr 29, 2026
bdfa559
Merge branch 'hotfix/cicd/use-git-app' of https://github.com/rtk-ai/r…
aeppling Apr 29, 2026
02cf39e
hotfix(cicd): git app token for artefact
aeppling Apr 29, 2026
282ebf8
Merge pull request #1630 from rtk-ai/hotfix/cicd/use-git-app
aeppling Apr 29, 2026
42930e9
Merge pull request #1631 from rtk-ai/develop
aeppling Apr 29, 2026
6759e01
chore(master): release 0.38.0
rtk-release-bot[bot] Apr 29, 2026
4338f02
Merge pull request #1632 from rtk-ai/release-please--branches--master…
aeppling Apr 29, 2026
017d0f9
fix(git): surface in-progress state in compact `rtk git status`
vsumner Apr 23, 2026
cff391e
fix(git): compact in-progress status state
vsumner Apr 24, 2026
316e65e
fix(git): address review feedback on status state surfacing
vsumner Apr 27, 2026
e91dee5
fix(git): drop state-hint extraction in compact status
vsumner Apr 28, 2026
09e1c0a
Merge pull request #1456 from JBF1991/fix-grep-passthrough
aeppling May 1, 2026
1bc4713
chore: fix clippy warnings
KuSh Apr 25, 2026
74c1b36
build(deps): bump rustls-webpki from 0.103.9 to 0.103.13
dependabot[bot] May 1, 2026
533894a
fix(json): use char boundary when truncating long string values
swithek Apr 27, 2026
7840030
fix(json): expand char boundary truncation test
swithek May 1, 2026
a017fbd
test(json): assert truncated value byte length for multibyte strings
swithek May 1, 2026
63da7da
feat(cicd): target develop branch
KuSh May 1, 2026
02da3d0
fix(curl): JSON passthrough + IsTerminal gate to prevent invalid JSON…
pszymkowiak Apr 29, 2026
2ed53c7
fix(curl): gate force_tee_hint, extend JSON heuristic, avoid full-bod…
pszymkowiak Apr 29, 2026
bf6d4b2
Merge pull request #1338 from lumincui/fix/ls-locale-fallback
aeppling May 3, 2026
f75a10b
Merge pull request #1371 from ousamabenyounes/fix/issue-1362
aeppling May 3, 2026
492aa76
Merge pull request #1009 from KuSh/broken-pnpm-i
aeppling May 3, 2026
cac8ce7
fix(ls): handle device files (block, char, pipe, socket) in ls filter
MaxenceB59 Apr 22, 2026
e456be1
Merge pull request #1451 from MaxenceB59/fix/ls-locale-glob-issue-844
aeppling May 3, 2026
7e552ae
Merge pull request #1532 from KuSh/clippy-fixes
aeppling May 4, 2026
17ffe62
Merge pull request #1238 from KuSh/dotnet-flakiness
aeppling May 4, 2026
5987333
fix(cicd): match ":" for body prefix to catch
aeppling May 4, 2026
b1233ab
fix(cicd): match allowed repo list in pr bodies
aeppling May 4, 2026
42f0203
Merge branch 'cicd-auto-next-release' of https://github.com/rtk-ai/rt…
aeppling May 4, 2026
b5500bb
Merge pull request #1586 from KuSh/git-stash-nothing
aeppling May 4, 2026
aad0db8
fix(init-uninstall): uninstall removes --claude-md artifacts on Windows
aeppling May 4, 2026
bf24972
Merge pull request #1462 from rtk-ai/cicd-auto-next-release
aeppling May 5, 2026
d395f97
Merge pull request #392 from rtk-ai/fix/address-issue-384
aeppling May 5, 2026
71d285f
feat(gradlew): add Gradle/gradlew support with streaming filters
kherembourg May 5, 2026
1da5793
feat(hooks): add Pi coding agent integration
May 6, 2026
d6e2752
refactor: handling of uninstallation
gitbluf May 6, 2026
2acc0c4
test(cli): add init parse coverage for --pi, --agent pi, and --uninst…
gitbluf May 6, 2026
60346e9
Merge pull request #1692 from rtk-ai/develop
aeppling May 6, 2026
36ec02d
fix(gradlew): satisfy semgrep dynamic-command-execution rule
kherembourg May 6, 2026
024c4a6
refactor(gradlew): align with shared runner pattern
kherembourg May 6, 2026
dad9f16
chore(master): release 0.39.0
rtk-release-bot[bot] May 6, 2026
2fbc751
Merge pull request #1744 from rtk-ai/release-please--branches--master…
aeppling May 6, 2026
9e3a5ae
fix(gradlew): use resolved_command for system gradle fallback
kherembourg May 6, 2026
b2a3ad9
feat: rm rtk awareness injection
gitbluf May 6, 2026
a4caafa
chore: docs cleanup
gitbluf May 6, 2026
833026b
Merge pull request #312 from kherembourg/feat/gradlew-android-support
aeppling May 6, 2026
f0136af
Update telemetry documentation link to use 'master' branch
sadikkuzu May 7, 2026
ed161b0
fix(dotnet): move build/test/restore status line to the bottom
F0rty-Tw0 Apr 28, 2026
106305b
fix(dotnet): 🐛 format build/test/restore output sections
F0rty-Tw0 May 4, 2026
271bc53
fix(dotnet): 🐛 format build/test/restore output summaries
F0rty-Tw0 May 5, 2026
c5245d7
fix(dotnet): 🐛 format warnings section in build/test/restore outputs
F0rty-Tw0 May 5, 2026
f2da381
fix: correct ARCHITECTURE.md path in README links
swseverance May 7, 2026
2f163e3
fix(init): make --pi route to Pi-only mode and skip CLAUDE.md injection
gitbluf May 7, 2026
a7cab79
chore: update hooks/pi/rtk.ts to reflect new package name
gitbluf May 7, 2026
998f1ee
feat(hooks): add transparent_prefixes config for wrapper commands
vsumner Apr 23, 2026
b234bc6
fix(hooks): compose env and transparent prefixes
vsumner Apr 26, 2026
fdf0ed0
fix(hooks): address transparent prefix review
vsumner May 3, 2026
041de2b
fix(hooks): address transparent prefix review comments
vsumner May 5, 2026
20cac8a
fix: minor code cleanup, avoid duplicating logic
KuSh May 7, 2026
5cfb8e1
fix: new rewite_command test call after rebase
KuSh May 7, 2026
b058c96
fix: don't inject -json for go test -bench runs
mykaul Apr 29, 2026
fa7020b
refactor(warn): src/core/utils.rs has an unused error warning at comp…
xdm67x May 8, 2026
380a7c9
Merge pull request #1610 from mykaul/fix/go-bench-no-json
aeppling May 8, 2026
4ebda52
fix(cicd): pr-target clean msg + git app token
aeppling May 8, 2026
e4c3ed7
Merge pull request #1792 from rtk-ai/fix/cicd/pr-target-enhance
aeppling May 8, 2026
6ebde6d
fix(git): resolve status completeness conflicts
em0t May 9, 2026
f00977a
fix(hooks): make Cursor preToolUse rewrites work and stay visible
kamilkaczmareksolutions May 5, 2026
96aeb69
Merge branch 'develop' into feat/init-dry-run
aeppling May 9, 2026
4830d50
fix: resolve merge conflict artifacts in init.rs
aeppling May 9, 2026
172ec54
Merge pull request #1032 from hed0rah/feat/init-dry-run
aeppling May 9, 2026
2a41e03
Merge pull request #1767 from swseverance/fix/links
pszymkowiak May 10, 2026
0a55201
Merge pull request #1791 from xdm67x/refactor/unused-error-warning-fix
pszymkowiak May 10, 2026
858d0d9
Merge pull request #1764 from sadikkuzu/update-telemetry-docs-link
pszymkowiak May 10, 2026
f005dbf
chore: fix clippy 0.1.95 warnings
KuSh May 7, 2026
70b9f38
chore(ci): deny warnings and make clippy pass mandatory in ci
KuSh May 10, 2026
107b3d3
Merge pull request #1776 from KuSh/fix-clippy-0.1.95
aeppling May 10, 2026
2d6e10a
Merge pull request #1718 from kamilkaczmareksolutions/fix/cursor-hook…
pszymkowiak May 10, 2026
9d3b99d
feat(hermes): add rtk integration
Kayphoon May 7, 2026
f7c4bf6
style(hooks): format BOM helper assertion
Kayphoon May 11, 2026
55f998d
Merge pull request #1614 from Kayphoon/feat/hermes-integration
aeppling May 11, 2026
1ef5b10
Merge branch 'develop' into develop
gitbluf May 11, 2026
cb1661e
feat(init): remove --pi flag, canonicalize Pi install to --agent pi
gitbluf May 11, 2026
cd6ac2f
fix(security): replace insecure tmp, lock git workflow perm
aeppling May 13, 2026
26b96ec
fix(security): pin workflow actions to SHA, clean up tempfile on failure
aeppling May 13, 2026
54d1f87
Merge pull request #1871 from rtk-ai/fix/cicd-runners/insecure-tmp-lo…
aeppling May 13, 2026
7e418fd
Update pr-target-check.yml
aeppling May 13, 2026
fef1ba5
Merge pull request #1874 from rtk-ai/fix/cicd/spelling-branch-fr-en
aeppling May 13, 2026
90525ac
Merge pull request #1747 from rtk-ai/develop
aeppling May 13, 2026
0c6a838
fix(cicd): set release-please target-branch to master [skip ci]
aeppling May 13, 2026
120d99f
chore(master): release 0.40.0
rtk-release-bot[bot] May 13, 2026
1e0d01b
Merge pull request #1878 from rtk-ai/release-please--branches--master…
aeppling May 13, 2026
e827184
Merge pull request #1368 from ousamabenyounes/fix/issue-1250
aeppling May 13, 2026
3ba1634
Merge pull request #991 from em0t/fix/git-completeness
aeppling May 14, 2026
b70b0fe
fix(docker): forward --tail flag in compose logs
pszymkowiak May 14, 2026
5f1d8b0
Merge pull request #1885 from rtk-ai/fix/compose-logs-tail-flag-v2
pszymkowiak May 14, 2026
62fc0e0
fix(filters): address adversarial test-suite findings on aggressive f…
aeppling May 12, 2026
16803a6
chore(filters): remove filter-level annotations and restore compose l…
aeppling May 15, 2026
f6b28c2
fix(filters): add test for aggressive filter batch fix
aeppling May 15, 2026
be51783
fix(git): stream push output via FilterMode::Streaming (#963)
ousamabenyounes May 14, 2026
46fe7c4
feat(hints): add tail hints for tee & hints + address reviews
aeppling May 16, 2026
4eefe2f
fix: re-add env python as noisy dir
aeppling May 16, 2026
3571d52
fix: '...' ascii to unicode, remove some comments
aeppling May 16, 2026
b8172e5
fix(kubectl): compact get pods and services aliases
pagarsky May 5, 2026
2dd0ec9
Merge pull request #1720 from pagarsky/fix/kubectl-get-alias
aeppling May 17, 2026
d6c5647
Merge pull request #1531 from ousamabenyounes/fix/issue-963
aeppling May 17, 2026
f21b864
fix(filters): split docker ps/-a paths, cap ruff violations at 50
aeppling May 18, 2026
64ed4f8
fix(init): honor dry-run for Pi install and uninstall paths
gitbluf May 18, 2026
90c285c
Merge pull request #1895 from rtk-ai/fix/aggressive-filters-batch
aeppling May 19, 2026
548e4dd
fix(tee): safe truncation caps and compose-ps tee content fix
aeppling May 16, 2026
4960630
fix(rust): multi-line blocks used with tail hint
aeppling May 17, 2026
4acdcf2
docs(cmds): truncations hints and recovery guidelines
aeppling May 17, 2026
15a0d2e
Merge pull request #1928 from rtk-ai/fix/tee-hint-trunc-quality
aeppling May 19, 2026
2241428
test(hooks/init): add red test for copilot-instructions preservation
YOMXXX May 20, 2026
d108165
fix(hooks/init): preserve user content in copilot-instructions.md
YOMXXX May 20, 2026
544a5f4
test(hooks/init): cover idempotency, stale-block, dry-run, fresh, mal…
YOMXXX May 20, 2026
194a1b4
refactor(hooks/init): extract run_copilot_at for parallel-safe tests
YOMXXX May 20, 2026
f2864eb
docs(readme): fix license references to match LICENSE (Apache-2.0)
tylerezimmerman May 20, 2026
b6054a5
refacto(truncations): Set global CAPS for truncation
aeppling May 20, 2026
6a57821
Merge pull request #1997 from tylerezimmerman/fix/readme-license-apac…
aeppling May 20, 2026
35a540c
refactor(hooks/init): share write_rtk_block, unify malformed handling
YOMXXX May 20, 2026
a04aa7e
Merge pull request #1976 from YOMXXX/fix/copilot-instructions-preserve
aeppling May 20, 2026
6f4519a
chore(cargo): declare MSRV via rust-version = "1.91"
YOMXXX May 21, 2026
9c80934
Merge branch 'develop' into fix/tee-hint-trunc-quality
aeppling May 21, 2026
d5a1731
fix(truncate): global caps reduce (avoid underflow and 0 results)
aeppling May 21, 2026
b3adcb1
fix: honor explicit -n N limit for git log on merge commits
penniger May 21, 2026
4b905c5
Merge branch 'develop' into develop
gitbluf May 21, 2026
a6844dc
chore: regroup agent init tests by agent section
gitbluf May 21, 2026
1e56235
Merge pull request #1998 from rtk-ai/fix/tee-hint-trunc-quality
aeppling May 21, 2026
7d31049
Merge pull request #2020 from rtk-ai/master
aeppling May 21, 2026
7753e48
fix(git): drop -uall from compact status so output never exceeds raw
aeppling May 22, 2026
06476d1
Merge pull request #2035 from rtk-ai/fix/git-status-uall
aeppling May 22, 2026
f431fb9
Update git.rs
aeppling May 22, 2026
6e6efd4
docs(git): sync status README with --porcelain -b (drop -uall)
aeppling May 22, 2026
8564ddc
Merge pull request #2040 from rtk-ai/fix/review-1879-git-status-doc-test
aeppling May 22, 2026
9c943d6
Merge pull request #1879 from rtk-ai/develop
aeppling May 22, 2026
02f7697
chore(master): release 0.41.0
rtk-release-bot[bot] May 22, 2026
9bd6e6f
feat: address pr suggestions
gitbluf May 22, 2026
8bc8b46
chore: sync with pi api
gitbluf May 22, 2026
f6a5451
chore: minor cleanup
gitbluf May 22, 2026
4c6d914
Merge pull request #2041 from rtk-ai/release-please--branches--master…
aeppling May 23, 2026
26c8890
Merge pull request #2015 from okwn/contrib/rtk/git-log-merge-fix
aeppling May 23, 2026
805caf7
Merge pull request #1741 from gitbluf/develop
aeppling May 23, 2026
be226d4
fix(grep): parse single-file output containing colons
F0rty-Tw0 May 23, 2026
0e3a6f4
fix(grep): NUL-separate file from line:content per review
F0rty-Tw0 May 23, 2026
13bb7da
Merge pull request #2055 from rtk-ai/develop
aeppling May 24, 2026
415fab0
chore(master): release 0.42.0
rtk-release-bot[bot] May 24, 2026
39583cf
Merge pull request #2076 from rtk-ai/release-please--branches--master…
aeppling May 24, 2026
2543be5
fix(hook): collapse bash line continuations before matching (#1564)
SAY-5 Apr 28, 2026
1875945
fix(pkg): rtk is Apache 2.0 and no MIT
aeppling May 25, 2026
fa11c6c
Merge pull request #2082 from rtk-ai/fix/pkg/MIT-to-apache-2
aeppling May 25, 2026
9bbc7bb
fix(docs): replace remaining MIT license references with Apache 2.0
aeppling May 25, 2026
4c099e4
Merge pull request #2084 from rtk-ai/fix/docs/mit-to-apache-remaining
aeppling May 25, 2026
6c4dfc7
fix(ls): preserve permission info as octal when -l/-la is passed
ryana-0154 May 25, 2026
53b5e79
feat: prefer short args and cleanup comments
KuSh May 25, 2026
8e04ac4
fix(grep): parse single-file output containing colons (#1554)
KuSh May 25, 2026
8fcc0dc
fix: handle GNU `--format=long` and `--format=verbose` long args
KuSh May 25, 2026
42ac86c
fix(hook): use maintainer regex suggestion for line continuation
SAY-5 May 25, 2026
0ec99de
fix(tests): use rewrite_command_no_prefixes in line-continuation tests
SAY-5 May 25, 2026
6e76f91
fix(ls): preserve permission info as octal when -l/-la is passed (#1675)
KuSh May 25, 2026
3c356b3
fix: remove remaining noise and rework comments
KuSh May 25, 2026
39f044e
fix(hook): collapse bash line continuations before matching (#1572)
KuSh May 25, 2026
e132896
fix(cicd): MIT to Apache 2.0
aeppling May 25, 2026
5a149a7
Merge pull request #2092 from rtk-ai/fix/cicd/mit-to-apache
aeppling May 25, 2026
8fb29e2
fix(hook): emit Copilot CLI-compatible hook config + strip BOM on Win…
aeppling May 25, 2026
84b703d
feat(hook): wire Copilot into uninstall, telemetry, and discover
aeppling May 25, 2026
557e57c
fix(hook): semgrep marker + regression tests for Copilot hook isolation
aeppling May 26, 2026
4b0bbf2
feat(hook): --global Copilot install + transparent rewrite via modifi…
aeppling May 26, 2026
69c10b6
fix(hook): default Copilot CLI rewrite to 'ask' to preserve permissio…
aeppling May 26, 2026
6c5e440
fix(hook): preserve Copilot CLI toolArgs metadata when rewriting command
aeppling May 26, 2026
db483e6
fix(hook): omit permissionDecision so Copilot prompts for the rewritt…
aeppling May 26, 2026
e1bb17f
fix(gh,glab): don't pre-reject view/checks/run subcommands missing th…
B-Galati May 27, 2026
f2a2e01
docs(readme): add Portuguese translation
LaraGb May 27, 2026
878af7d
Merge pull request #2128 from LaraGb/develop
aeppling May 28, 2026
852bcda
Merge branch 'develop' into master
aeppling May 28, 2026
207c82a
missing bracket
aeppling May 28, 2026
b6ecf96
missing test tag
aeppling May 28, 2026
e3ad973
fix(copilot-cli): use user-level instruction for -g
aeppling May 29, 2026
bcee6cc
fix: fmt
aeppling May 29, 2026
7853819
Update main.rs
aeppling May 29, 2026
b11f827
allow unsafe code clippy + semgrep
aeppling May 29, 2026
dd5362f
Update main.rs
aeppling May 29, 2026
26ff547
Update main.rs
aeppling May 29, 2026
acfd6c5
Merge pull request #1048 from ashwingopalsamy/master
aeppling May 29, 2026
a9a978c
Merge pull request #2101 from rtk-ai/fix/copilot-cli-hook-config-schema
aeppling May 29, 2026
3c8d29a
Merge pull request #2123 from B-Galati/fix/optional-gh-glab-id
aeppling May 29, 2026
5989ac9
fix(provider): sanatize more chars when encoding claude code project …
KuSh May 30, 2026
67a5958
doc(init): fix documentation inconsistencies arount `rtk init`
KuSh May 30, 2026
e9f42e5
Merge pull request #2173 from KuSh/supported-agents-fixes
aeppling May 31, 2026
653a209
Merge pull request #2172 from KuSh/2150-encode_project_path
aeppling May 31, 2026
83cd93e
chore(args): introduce a more generic solution for restoring double d…
KuSh May 10, 2026
508192d
fix(init): preserve settings.json symlink during atomic write
ChrisGVE May 25, 2026
f1474b4
fix(init): use fs::canonicalize for symlink resolution
ChrisGVE May 31, 2026
4128572
fix(gh): show fallback note when PR/issue body is filtered to empty
pszymkowiak May 27, 2026
f69ad6e
fix(go): respect build failure exit status
jsiu93 May 31, 2026
6873764
Merge pull request #2188 from jsiu93/fix/go-build-pattern-errors
pszymkowiak Jun 1, 2026
4c278d1
Merge pull request #2002 from YOMXXX/feat/msrv-1.91
pszymkowiak Jun 1, 2026
89ae19b
fix(grep): command token duplication in output withsame value filenam…
KuSh Jun 3, 2026
1bb17f4
fix(openclaw): no execSync to avoid async dangerous cmds
aeppling Jun 3, 2026
b915419
Merge commit from fork
aeppling Jun 3, 2026
9664e27
chore(master): release 0.42.1
rtk-release-bot[bot] Jun 3, 2026
f490ab7
Merge pull request #2240 from rtk-ai/release-please--branches--master…
aeppling Jun 3, 2026
57e9350
Merge pull request #2239 from KuSh/1669-restore_double_dash-fix
aeppling Jun 3, 2026
4f4a6a0
Merge pull request #1266 from shalk/fix/commit-multibyte-panic-rebased
aeppling Jun 3, 2026
cdcdb68
fix(permissions): never auto-allow not evaluable + defer to the agent
aeppling Jun 3, 2026
6ab149b
fix(permissions): cursor and gemini use correct permissions settings …
aeppling Jun 3, 2026
f181184
fix(permissions): add test for cursor and gemini settings perm
aeppling Jun 3, 2026
86ebbb3
refacto(permissions): fmt
aeppling Jun 3, 2026
084fa84
fix(permissions): project-first config lookup for Gemini/Cursor
aeppling Jun 3, 2026
ce36297
fix(permissions): >&file redirect no allow + scope Gemini/Cursor config
aeppling Jun 3, 2026
e1bc0bd
Merge commit from fork
aeppling Jun 5, 2026
4be04e0
chore(master): release 0.42.2
rtk-release-bot[bot] Jun 5, 2026
c873e19
Merge pull request #2283 from rtk-ai/release-please--branches--master…
aeppling Jun 5, 2026
952245d
fix(permissions): never auto-allow not evaluable + defer to the agent
aeppling Jun 3, 2026
a4bb55e
fix(permissions): cursor and gemini use correct permissions settings …
aeppling Jun 3, 2026
1ccf6e3
fix(permissions): add test for cursor and gemini settings perm
aeppling Jun 3, 2026
4c9b14e
refacto(permissions): fmt
aeppling Jun 3, 2026
f88b6be
fix(permissions): project-first config lookup for Gemini/Cursor
aeppling Jun 3, 2026
e16aa26
fix(permissions): >&file redirect no allow + scope Gemini/Cursor config
aeppling Jun 3, 2026
f525cee
fix(openclaw): no execSync to avoid async dangerous cmds
aeppling Jun 3, 2026
7a985c7
test(hook): Copilot CLI acceptance tests
aeppling Jun 5, 2026
66d66b1
fix: semgrep markers on test-fixture sensitive paths
aeppling Jun 5, 2026
e1cd274
Merge pull request #2286 from rtk-ai/fix/cve-permission-hardening-port
aeppling Jun 5, 2026
a1ef0ef
chore: merge master into develop (security port + release bump)
aeppling Jun 5, 2026
98108bf
Merge pull request #2288 from rtk-ai/chore/merge-master-into-develop
aeppling Jun 5, 2026
ab2038f
Merge pull request #2083 from rtk-ai/develop
aeppling Jun 5, 2026
6d89cb8
chore(master): release 0.42.3
rtk-release-bot[bot] Jun 5, 2026
de78d70
Merge pull request #2290 from rtk-ai/release-please--branches--master…
aeppling Jun 5, 2026
3c3f8d7
ci: replace upstream CI with fork sync workflow
github-actions[bot] Jun 11, 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
2 changes: 1 addition & 1 deletion .claude/agents/rust-rtk.md
Original file line number Diff line number Diff line change
Expand Up @@ -397,7 +397,7 @@ docker run --rm -v $(pwd):/rtk -w /rtk rust:latest cargo test # Linux via Docke
✅ **DO** compile regex once with `lazy_static!`
✅ **DO** verify token savings claims in tests (≥60%)
✅ **DO** test on macOS + Linux + Windows (via CI or manual)
✅ **DO** run `cargo fmt && cargo clippy && cargo test` before commit
✅ **DO** run `cargo fmt && cargo clippy --all-targets && cargo test` before commit
✅ **DO** benchmark startup time with `hyperfine` (<10ms target)
✅ **DO** use `anyhow::Result` with `.context()` for all error propagation

Expand Down
12 changes: 6 additions & 6 deletions .claude/commands/tech/codereview.md
Original file line number Diff line number Diff line change
Expand Up @@ -230,12 +230,12 @@ Glob tests/fixtures/<cmd>_raw.txt
└────────┬────────┘
│
▼
┌──────────────────────┐
│ 3. Quality gate │
│ cargo fmt --all │
│ cargo clippy │
│ cargo test │
└────────┬─────────────┘
┌─────────────────────────────┐
│ 3. Quality gate │
│ cargo fmt --all │
│ cargo clippy --all-targets │
│ cargo test │
└──────────────┬──────────────┘
│
Loop ←┘ (max N iterations)
```
Expand Down
13 changes: 0 additions & 13 deletions .github/PULL_REQUEST_TEMPLATE.md

This file was deleted.

66 changes: 0 additions & 66 deletions .github/copilot-instructions.md

This file was deleted.

57 changes: 0 additions & 57 deletions .github/docs-pipeline-contract.md

This file was deleted.

12 changes: 0 additions & 12 deletions .github/hooks/rtk-rewrite.json

This file was deleted.

167 changes: 167 additions & 0 deletions .github/scripts/ai_security_review.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
import subprocess, json, os, re, urllib.request

BASE = os.environ.get('BASE_REF', 'origin/main')
HEAD = os.environ['HEAD_REF'] # e.g. "v0.42.3" — required

# --- commits section (capped) ---
commits_raw = subprocess.check_output(
['git', 'log', f'{BASE}..{HEAD}', '--oneline'], text=True
).strip()
commit_lines = commits_raw.splitlines()
if len(commit_lines) > 100:
commits = '\n'.join(commit_lines[:100]) + f'\n[... {len(commit_lines) - 100} more commits]'
else:
commits = commits_raw

# --- diff section (Rust-relevant paths, capped; Cargo.lock excluded — cargo audit covers it) ---
diff = subprocess.check_output(
['git', 'diff', f'{BASE}..{HEAD}', '--',
'src/', 'build.rs', 'Cargo.toml', 'install.sh', '.claude/'],
text=True
)
diff_lines = diff.splitlines()
truncated = len(diff_lines) > 1500
if truncated:
diff = '\n'.join(diff_lines[:1500]) + '\n\n[TRUNCATED — see full diff in GitHub PR]'

# --- trust-critical modules: always include full contents at HEAD ---
TRUST_CRITICAL = ['src/core/telemetry.rs', 'src/discover/registry.rs']
critical_parts = []
for path in TRUST_CRITICAL:
try:
content = subprocess.check_output(['git', 'show', f'{HEAD}:{path}'], text=True)
critical_parts.append("### " + path + "\n```rust\n" + content + "\n```")
except subprocess.CalledProcessError:
critical_parts.append("### " + path + "\n[Not present at " + HEAD + " — may have moved; flag this]")
critical_section = (
"\n\n## Trust-Critical Module Full Contents\n"
"These modules are reviewed in full every sync regardless of diff size. "
"telemetry.rs is the only network-calling module; registry.rs decides how "
"Bash commands are rewritten and auto-approved.\n\n"
+ "\n\n".join(critical_parts)
)

# --- automated pattern scan over changed .rs files + trust-critical modules ---
DANGER_PATTERNS = [
(r'Command::new|\.spawn\(|\.output\(\)', 'exec: process execution'),
(r'https?://', 'network: hardcoded URL'),
(r'ureq::|reqwest|TcpStream|UdpSocket', 'network: client usage'),
(r'env::var\([^)]*(KEY|TOKEN|SECRET|PASSWORD|CREDENTIAL)', 'creds: secret env read'),
(r'\.ssh|\.aws|\.netrc|\.gnupg', 'creds: credential path'),
(r'\.claude', 'fs: ~/.claude access'),
(r'\bunsafe\b', 'mem: unsafe block'),
(r'base64', 'obfuscation: base64'),
(r'include_(bytes|str)!', 'embed: compile-time file embed'),
]

changed = subprocess.check_output(
['git', 'diff', '--name-only', f'{BASE}..{HEAD}', '--', 'src/', 'build.rs'],
text=True
).splitlines()
scan_files = sorted(set(
[p for p in changed if p.endswith('.rs')] + TRUST_CRITICAL
))

scan_findings = []
for path in scan_files:
try:
lines = subprocess.check_output(['git', 'show', f'{HEAD}:{path}'], text=True).splitlines()
except subprocess.CalledProcessError:
continue # deleted or moved at HEAD
for i, line in enumerate(lines, 1):
stripped = line.strip()
if stripped.startswith('//'):
continue
for regex, label in DANGER_PATTERNS:
if re.search(regex, line):
scan_findings.append(" [{}] {}:{} — {}".format(label, path, i, stripped[:160]))

scan_section = "\n\n## Automated Pattern Scan\n"
scan_section += "Scanned {} changed/trust-critical .rs files at {}.\n".format(len(scan_files), HEAD)
if scan_findings:
if len(scan_findings) > 200:
scan_findings = scan_findings[:200] + [" [... truncated at 200 hits]"]
scan_section += "Matched {} pattern(s):\n".format(len(scan_findings))
scan_section += "\n".join(scan_findings)
else:
scan_section += "No danger patterns matched."

# --- build prompt ---
prompt = (
"You are a security reviewer for a personal fork of rtk-ai/rtk (RTK, 'Rust Token Killer').\n\n"
"RTK is a Rust CLI that a Claude Code PreToolUse hook routes EVERY Bash command through: "
"`rtk rewrite` can rewrite commands and auto-approve them. A malicious change could therefore "
"execute or exfiltrate anything. I review every upstream release before building the binary "
"I run locally. Trust-critical paths: src/core/telemetry.rs (only legitimate network caller — "
"opt-in daily HTTPS ping) and src/discover/registry.rs (command rewrite rules).\n\n"
"Upstream release range under review: " + BASE + " -> " + HEAD + "\n\n"
"New commits:\n" + commits + "\n\n"
"Diff (Rust-relevant files only" + (", truncated" if truncated else "") + "):\n"
+ diff
+ critical_section
+ scan_section
+ "\n\n"
"Your job:\n"
"1. Summarize what changed in 2-4 plain English sentences.\n"
"2. Flag any of the following if present (with file:line reference):\n"
" - New network calls or hardcoded URLs outside telemetry.rs, or telemetry changes "
"(new endpoints, new data fields, consent-check removal)\n"
" - New process execution (Command::new / spawn) or changes to how rewritten commands are constructed\n"
" - Rewrite-registry changes that could auto-approve dangerous commands or inject arguments\n"
" - New filesystem access to credential paths (~/.ssh, ~/.aws, ~/.netrc) or ~/.claude\n"
" - New environment variable reads of secrets\n"
" - New dependencies or build.rs changes in Cargo.toml/build.rs\n"
" - New unsafe blocks, base64/obfuscation, or compile-time embedded blobs\n"
" - Changes under .claude/ (skills/commands that auto-load into Claude Code sessions) — treat as a prompt-injection surface\n"
" - Automated pattern scan hits (listed above) — assess each: benign or risky?\n"
"3. Give a one-line recommendation.\n\n"
"Respond in exactly this format:\n\n"
"## Summary\n"
"[2-4 sentences]\n\n"
"## Security Flags\n"
"[Bulleted list with file references, or \"None detected\"]\n\n"
"## Pattern Scan Assessment\n"
"[For each automated scan hit (group similar hits): BENIGN or RISK — one-line reason]\n\n"
"## Recommendation\n"
"MERGE SAFE / REVIEW NEEDED / DO NOT MERGE — [one sentence reason]"
)

payload = {
"model": "claude-haiku-4-5-20251001",
"max_tokens": 2048,
"messages": [{"role": "user", "content": prompt}]
}

api_key = os.environ.get('ANTHROPIC_API_KEY')
if not api_key:
review = "Warning: ANTHROPIC_API_KEY not set — AI review skipped. Review the diff manually before merging."
else:
req = urllib.request.Request(
'https://api.anthropic.com/v1/messages',
data=json.dumps(payload).encode(),
headers={
'x-api-key': api_key,
'anthropic-version': '2023-06-01',
'content-type': 'application/json'
}
)
try:
with urllib.request.urlopen(req) as resp:
result = json.loads(resp.read())
review = result['content'][0]['text']
except Exception as e:
review = "Warning: Error generating AI review: {}\n\nReview the diff manually before merging.".format(e)

# prepend scan hits so they're visible even if the AI summary is brief
output = review
if scan_findings:
output = (
"## Raw Pattern Scan Hits\n"
+ "\n".join(scan_findings)
+ "\n\n---\n\n"
+ review
)

with open('/tmp/ai_review.md', 'w') as f:
f.write(output)
print(output)
Loading