Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
348 commits
Select commit Hold shift + click to select a range
2fa7acb
Add ARM Network dependency (#69093)
danielashare Aug 3, 2026
c929a85
MWI Scopes: Github Join Method (#68939)
tscolari Aug 3, 2026
b001c1f
MWI: Scope Namespace Bot Instances (2/2) - `tctl` (#68391)
strideynet Aug 3, 2026
de4f8f2
discovery: Add S3 bucket listing pagination (#69211)
camscale Aug 3, 2026
e46813b
Fix unified resource items shadows (#69224)
gzdunek Aug 3, 2026
92f6587
Okta: Remove OktaService.UpdateOktaAssignmentStatus (#66818)
kopiczko Aug 3, 2026
86b5c3d
Okta: Remove OktaAssignmentWatcher (#66817)
kopiczko Aug 3, 2026
d875508
Add new CIR fields to audit events (#69231)
mcbattirola Aug 3, 2026
02e35b5
Add support for Linux desktop labels and logins in role editor (#68048)
probakowski Aug 3, 2026
168ff52
Fix include rendering in installer instructions (#68349)
ptgott Aug 3, 2026
6864bde
Terraform: improve identifier type safety (#69125)
rosstimothy Aug 3, 2026
a5185fa
Fix missing prerequisite for Teleport user in CA Override doc. (#69206)
cthach Aug 3, 2026
29f2784
Support scope filtering/watching for scoped bot instances (#69126)
strideynet Aug 3, 2026
310f332
Okta: Remove plugin validation (moved to e) (#64648)
kopiczko Aug 3, 2026
e930cf7
docs: Updates Scoped RBAC guide (#69201)
rosstimothy Aug 3, 2026
c4ec12d
iOS: Debug Serial Number (#69017)
gmedori Aug 3, 2026
83861c9
Extend WorkloadIdentity resource Watch/List to support scope filterin…
strideynet Aug 3, 2026
dd0807f
docs: Update Scoped RBAC page with App Access details (#69078)
williamong-tel Aug 3, 2026
a582484
Update e (#69295)
avatus Aug 3, 2026
0163a8d
adding sections for dynamic kube cluster registration and kube resour…
eriktate Aug 3, 2026
67a3854
Add production path for serial number retrieval (#69156)
gmedori Aug 3, 2026
3ebd9e6
Make helm unit tests set chart version (#69157)
adamcarheden-teleport Aug 3, 2026
7d573a3
Added unhealthyPodEvictionPolicy to teleport-kube-agent helm chart (#…
adamcarheden-teleport Aug 3, 2026
0be993c
Increase ACL lock release timeout (#69167)
smallinsky Aug 4, 2026
1c40760
allow configuring web session client dial options (#69204)
NickCellino Aug 4, 2026
96b6fdd
Add optional CA override details when SPIFFE SVID is issued. (#69298)
cthach Aug 4, 2026
3f2b3ae
SKILL: add Azure management groups to discovery skill (#69095)
alexhemard Aug 4, 2026
c9626aa
[web ui] feat(Discovery): add Organization support for EC2 Discovery …
alexhemard Aug 4, 2026
22f0a07
add scoped verb transition shim (#69305)
fspmarshall Aug 4, 2026
4679339
Remove duplications + unused acl_command.go (#68962)
kimlisa Aug 4, 2026
a918ca5
scoped verbs rework (#69232)
fspmarshall Aug 4, 2026
cdbc117
gha: stop collecting contexts (#69331)
bpdohall Aug 4, 2026
fbac23c
Validate access list name length on creation (#69008)
NickCellino Aug 4, 2026
c0b7a93
Add RequestKind validation for Slack review payloads (#69234)
kshi36 Aug 4, 2026
47ea037
Add access list create,update,remove skill (#68277)
kimlisa Aug 4, 2026
d849e89
Bump the rust group with 6 updates (#69253)
dependabot[bot] Aug 4, 2026
957ecc3
update e-ref (#69333)
fspmarshall Aug 4, 2026
6fbe637
Add scoped IaC docs (#69300)
hugoShaka Aug 4, 2026
4963178
adding scoped tctl resource handlers for kube servers, fixing fake pa…
eriktate Aug 4, 2026
9c7de9a
Deflake TestUnifiedResourcesGet (#69267)
zmb3 Aug 4, 2026
d35aa1a
Fix teleport-kube-agent unhealthyPodEvictionPolicy default test (#69332)
adamcarheden-teleport Aug 4, 2026
2c92419
appresource: Compile and evaluate where clauses (#68796)
juliaogris Aug 4, 2026
0e6486c
tbot: include init containers (sidecars) in Kubernetes workload attes…
tscolari Aug 5, 2026
ebcac7a
Fix bug in delegated joining when BotInstance is deleted (#69325)
strideynet Aug 5, 2026
917e147
Add docs for cleanup of deactivated Okta user assignments (#69322)
nixpig Aug 5, 2026
f2149c9
fix kubernetesaccesssection test flakiness (#69346)
rudream Aug 5, 2026
90e2137
Bump undici from 8.5.0 to 8.9.0 (#69302)
dependabot[bot] Aug 5, 2026
4f0a65a
Relax validation of connector role-mapping on read paths (#69323)
nixpig Aug 5, 2026
3a9d0e3
Remove old IronRDP artifcats cleanup (#69349)
gzdunek Aug 5, 2026
aa901b0
Fix some drift in the builds for Windows binaries (#69271)
zmb3 Aug 5, 2026
1d1fbe4
Migrate SAML connector to a new generic provider handling (#69279)
kozadaev-tp Aug 5, 2026
1a9de95
[terraform] upgrade protoc-gen-terraform to v4.0.0 (#67080)
bernardjkim Aug 5, 2026
458469d
set supplemental groups and reject symlinks when reading .tsh/environ…
capnspacehook Aug 5, 2026
58cf501
Remove unhealthyPodEvictionPolicy setting from unittest values (#69362)
adamcarheden-teleport Aug 5, 2026
d664e77
mask setuid/setgid/sticky bits when transferring files via SFTP (#67784)
capnspacehook Aug 5, 2026
4cc0872
Add configurable automatic review resolution reasons (#69169)
NickCellino Aug 5, 2026
fed1def
Clean up stale doc comments in kube roundtrip (#68532)
jakealti Aug 5, 2026
61cc3ad
Fix cert client selection for prefetched MFA checks (#69152)
jakealti Aug 5, 2026
7d99b79
bug(Discovery): fix org unit UI validation for subscription scope (#6…
alexhemard Aug 5, 2026
73ae81b
Update Terraform modules (#69306)
GavinFrazar Aug 6, 2026
21bb1ce
Adds defensive `nil` check to `oracleJoin()` (#67996)
tcsc Aug 6, 2026
c2d17dd
Remove unused web GitHub configuration (#69358)
gzdunek Aug 6, 2026
f7aef78
MWI: Bot Scope Namespacing (#68253)
strideynet Aug 6, 2026
8abbd0b
Deprecate `roles` field in `tbot` (#69181)
strideynet Aug 6, 2026
7a7bbc2
[vnet] Increase tun mtu to 16 KiB (#69025)
tangyatsu Aug 6, 2026
b881b68
Add fixture for SAML connector without role-mapping (#69412)
nixpig Aug 6, 2026
a778698
adding unpinned reads to locks and cluster audit config, adding unsco…
eriktate Aug 6, 2026
8b552bb
Bump `node-tar`, `postcss` `brace-expansion`, `fast-uri`, `undici` (#…
gzdunek Aug 6, 2026
e98f39c
Document deprecation of `roles` config field in `tbot` (#69182)
strideynet Aug 6, 2026
d6ae3d6
types: add ResourcePrincipalSet to unified resources protos and types…
kiosion Aug 6, 2026
2a05d3e
role: Add minimal v9 with app default-deny (#68736)
juliaogris Aug 7, 2026
b24a200
Update e (#69432)
avatus Aug 7, 2026
5351582
`lib/client/proxy/insecure`: Add support for `api/client.ALPNConnUpgr…
ravicious Aug 7, 2026
1f99c89
Fix `application-proxy` service not behaving correctly when ALPN upgr…
strideynet Aug 7, 2026
0a47b8d
add no resource setup flag (#68865)
emargetis Aug 7, 2026
ebb728f
Terraform: Convert Auth Preference to generic provider (#69099)
rosstimothy Aug 7, 2026
8f47cae
Bump @typescript/native-preview@7.0.0-dev.20260629.1 to typescript@7.…
dependabot[bot] Aug 7, 2026
3b395ab
Bump @testing-library/jest-dom from 6.9.1 to 7.0.0 (#69259)
dependabot[bot] Aug 7, 2026
0930cd5
Bump react-dnd from 14.0.5 to 16.0.1 (#69263)
dependabot[bot] Aug 7, 2026
13be5bd
Terraform: convert database to generic provider (#69396)
rosstimothy Aug 7, 2026
b6ca111
Deflake Kubernetes integration tests (#69364)
zmb3 Aug 7, 2026
0f86278
Update electron, electron-builder, node-pty, Node.js, and pnpm (#69424)
dependabot[bot] Aug 7, 2026
2ed5586
Fix E2E runner linting, add check to `make lint` and CI, fix e2e type…
ryanclark Aug 7, 2026
e69c7ab
[entraid] add syncIntervals field to `PluginEntraIdSpec` (#69172)
flyinghermit Aug 7, 2026
9658214
Switch `tsgo` to `tsc` (#69469)
gzdunek Aug 7, 2026
fed581a
Terraform: Convert Lock to generic provider (#69398)
rosstimothy Aug 7, 2026
1ab9183
Terraform: convert user to generic provider (#69400)
rosstimothy Aug 7, 2026
9d29ffb
Terraform: convert static host user to generic provider (#69404)
rosstimothy Aug 7, 2026
94ee3ab
Terraform: convert installer to generic provider (#69403)
rosstimothy Aug 7, 2026
c1991c9
Add spiffe-tls to supported CA overrides and create mapper func. (#69…
cthach Aug 7, 2026
5f58d19
Mark the Sub CA RFD as implemented (#69471)
codingllama Aug 7, 2026
e07791d
Terraform: Makefile improvements (#69468)
rosstimothy Aug 7, 2026
01380b6
make scoped key encoding opaque (#68913)
fspmarshall Aug 7, 2026
e98fa3e
Terraform: convert role to generic provider (#69397)
rosstimothy Aug 7, 2026
9bb3328
`client_ip_restriction`: add new fields to Terraform provider (#68942)
mcbattirola Aug 7, 2026
30da14f
fix: allow MFA response reuse during tctl acl create/update (#69430)
kimlisa Aug 7, 2026
afd9179
Use go tool to run protoc-gen-terraform (#69437)
hugoShaka Aug 7, 2026
15136eb
Sign managed updates Linux tarballs with cosign (#68053)
aadc-dev Aug 7, 2026
4e2a29c
Terraform: convert dynamic desktops to generic provider (#69401)
rosstimothy Aug 7, 2026
47ac6c4
Terraform: convert access monitoring rules to generic provider (#69418)
rosstimothy Aug 7, 2026
15ca6d0
Terraform: convert health check to generic provider (#69419)
rosstimothy Aug 7, 2026
886ee02
bump e (#69489)
michellescripts Aug 7, 2026
b887107
appresource: Add path tokenizer and validator (#68795)
juliaogris Aug 7, 2026
c64bb4c
Add Scope Namespacing support for SSH Servers (Nodes) (#69213)
williamong-tel Aug 7, 2026
b2aa85d
Update e (#69494)
williamong-tel Aug 8, 2026
e0d3c67
Perf and stability improve for lib/srv/regular (#64877)
russjones Aug 8, 2026
40e6fa0
Allow deletion of a role named "admin" (#69486)
zmb3 Aug 10, 2026
c7ccc02
Bump msw-storybook-addon from 2.0.7 to 3.0.0 (#69261)
dependabot[bot] Aug 10, 2026
4aa80c6
EnrollPairingService: Add methods for approving and denying (#69459)
ravicious Aug 10, 2026
54a2cfd
Add RPC definitions for approving & denying `EnrollPairing` (#69458)
ravicious Aug 10, 2026
a4449d0
Mark RFD for SSH in-band MFA as implemented. (#69472)
cthach Aug 10, 2026
a230ed0
Remove unused JSDOM dependency (#69509)
gzdunek Aug 10, 2026
3705911
Update `js-yaml` to 3.15.1 and 4.3.1 (#69511)
gzdunek Aug 10, 2026
ea926ac
Update test plan for Okta sync (#69503)
nixpig Aug 10, 2026
3a45ff9
Implement RFD 328: scoped operator (#69074)
hugoShaka Aug 10, 2026
7cf8a2a
Bump aws-actions/configure-aws-credentials in /.github/workflows (#66…
dependabot[bot] Aug 10, 2026
68e57ef
Bump actions/setup-go from 6 to 7 in /.github/workflows (#69268)
dependabot[bot] Aug 10, 2026
42541eb
Terraform: convert trusted cluster to generic provider (#69399)
rosstimothy Aug 10, 2026
395d98b
feat: Add tctl recording summary commands for session summary managem…
tigrato Aug 10, 2026
6ed81cd
Populate per-dimension principal sets in unified resources listings (…
kiosion Aug 10, 2026
778a1a0
Add test plan for auditqueue. (#68093)
kkloberdanz Aug 10, 2026
4393bc3
Disable directory sharing icon for Linux desktop (#69384)
probakowski Aug 10, 2026
2f95040
Bump github.com/go-git/go-git/v5 from 5.19.1 to 5.19.2 (#69474)
dependabot[bot] Aug 10, 2026
575189a
[vnet] Skip AAAA records when IPv6 is disabled on the host (#68666)
tangyatsu Aug 10, 2026
242ba18
Terraform: convert okta import rule to generic provider (#69402)
rosstimothy Aug 10, 2026
2eefa79
[Docs] Add Identity Security CLI documentation (target: v18.11) (#68569)
ghassanachi Aug 10, 2026
4dd11de
Terraform: convert db object import rule to generic provider (#69421)
rosstimothy Aug 10, 2026
977ca73
scopes: allow nodes to be retrieved via ListResources (#69479)
rosstimothy Aug 10, 2026
e33b8da
Dedup events in DynamoDB (#68470)
kkloberdanz Aug 10, 2026
5e3c6d9
[vnet] Use order-insensitive DNS config comparison on Windows (#69123)
tangyatsu Aug 10, 2026
e739b48
Udpate tsh ls output to display the SQN (#69282)
rosstimothy Aug 10, 2026
2b37573
Terraform: convert workload identity to generic provider (#69416)
rosstimothy Aug 10, 2026
4631a36
Terraform: convert login rule to generic provider (#69426)
rosstimothy Aug 10, 2026
2f285d6
Fix Terraform provider (#69435)
hugoShaka Aug 10, 2026
27b305d
Removed deprecated code marked for deletion. (#69290)
Joerger Aug 10, 2026
78d4722
Fix tbot skipping OpenSSH CA rotation. (#68977)
Joerger Aug 10, 2026
466fccd
operator: Add role v9 CRD kind (#68737)
juliaogris Aug 10, 2026
149d17e
Fix `google.protobuf.Struct` handling in the Kubernetes operator (#69…
timothyb89 Aug 11, 2026
ae8467a
Add documentation for `generic_oidc` (#69216)
timothyb89 Aug 11, 2026
832287c
Add default Windows installer (#68626)
danielashare Aug 11, 2026
481ff4f
`audit/types.ts`: Remove unused `eventGroupTypes` (#69517)
ravicious Aug 11, 2026
b888160
Remove legacy user generation label handling (#69335)
strideynet Aug 11, 2026
8930bc3
Fix failing unix domain socket test on MacOS (#69556)
strideynet Aug 11, 2026
3187b75
Integrate Windows VM discovery in to Azure watcher (#68807)
danielashare Aug 11, 2026
f1c27b0
Make internal skills available to codex by default (#69534)
r0mant Aug 11, 2026
1dba538
Connect: Switch from CommonJS to ES Modules (#68623)
gzdunek Aug 11, 2026
2d2152e
[pgbk] Handle 42P07 in Retry{Idempotent} (#69321)
okraport Aug 11, 2026
863e35d
Add Github SSO tests for connectors without teams_to_roles (#69467)
nixpig Aug 11, 2026
a8a6ad6
e2e runner changes - BPF, remote docker host (SSH), restrict tests to…
ryanclark Aug 11, 2026
bebdf17
Add a Beams use case demo for databases (#69382)
ptgott Aug 11, 2026
1c6d883
Remove app auth config (#69528)
gabrielcorado Aug 11, 2026
98c0769
Improve acl-lifecycle skill doc (#69381)
kimlisa Aug 11, 2026
2c8a765
[18.10.3] Bump cloud docs (#69288)
taraspos Aug 11, 2026
9420535
[vnet] Skip rewriting /etc/resolver files when DNS config is unchange…
tangyatsu Aug 11, 2026
5a674cd
Terraform: convert networking config to generic provider (#69488)
rosstimothy Aug 11, 2026
5e0a651
kube: reuse one MFA ceremony across tsh proxy kube issuances (2/4) (#…
jakealti Aug 11, 2026
5cf14ff
IAC Operator SSH Server Namespacing support (#69543)
williamong-tel Aug 11, 2026
654ec63
Fix `tsh ls -R -v` formatting (#69562)
rosstimothy Aug 11, 2026
6b9793e
Terraform: convert trusted device to generic provider (#69427)
rosstimothy Aug 11, 2026
62cf907
[e2e] Allow e2e tests to declare custom env variables (#69441)
emargetis Aug 11, 2026
5dd08bd
Stop honoring `teleport.cache.enabled` (#69439)
rosstimothy Aug 12, 2026
677b0d6
types: Declare all app_resources fields (#69500)
juliaogris Aug 12, 2026
7a177b6
buf: Drop the reserved-deletion except (#69554)
juliaogris Aug 12, 2026
1bd52bd
Docs: Update SCIM enrollment for OIN (#69415)
kopiczko Aug 12, 2026
bb63400
Bump the ui group across 1 directory with 47 updates (#69470)
dependabot[bot] Aug 12, 2026
289411a
Update `e` (#69596)
gzdunek Aug 12, 2026
d73b124
discovery: include Azure identity in subscription failure UserTasks (…
michaelpm91 Aug 12, 2026
9fe5463
Clarified reporting service for duplicate k8s metrics (#69533)
adamcarheden-teleport Aug 12, 2026
efe6598
Add audit events for approving & denying an `EnrollPairing` (#69505)
ravicious Aug 12, 2026
aaa380c
docs(upgrading/cloud-cluster): mention email notifications (#69579)
dustinspecker Aug 12, 2026
e92b648
Remove client invocations/backend implementations of deprecated GetTo…
strideynet Aug 12, 2026
f62ac7c
Fix `teleport-investigate` and `teleport-access-review` skill inaccur…
ghassanachi Aug 12, 2026
be98bed
Terraform: convert classifier to generic provider (#69423)
rosstimothy Aug 12, 2026
b3cf83c
Terraform: convert recording config to generic provider (#69491)
rosstimothy Aug 12, 2026
3ff50a0
Fix improper userca.pem concatenation by kinitProvider (#69582)
codingllama Aug 12, 2026
8c22cf3
mark bloat binary builds as dev builds so they do not require keys (#…
aadc-dev Aug 12, 2026
b8792db
tfgen: support generating top-level access list scope field (#69337)
kimlisa Aug 12, 2026
9c1fc27
Remove Firestore key migration (#69590)
rosstimothy Aug 12, 2026
3ef4934
IAC SSH Server Namespacing support (#69542)
williamong-tel Aug 12, 2026
db19a7f
Implement tctl observability (#67904)
kkloberdanz Aug 12, 2026
8a625e2
waiting for kube server to land in unified resource cache before proc…
eriktate Aug 12, 2026
17df263
Terraform: convert ui config to generic provider (#69507)
rosstimothy Aug 13, 2026
ee42a3c
docs: address codex feedback for username trait in PingFederate role …
mmcallister Aug 13, 2026
0d76b1d
auth: Add v9 downgrade property tests (#68916)
juliaogris Aug 13, 2026
aecf425
docs: entra id metrics (#69343)
flyinghermit Aug 13, 2026
37c3a8a
Terraform: convert auto update version to generic provider (#69514)
rosstimothy Aug 13, 2026
dce19fa
Deprecate recording of join metadata into bot instance record (#69571)
strideynet Aug 13, 2026
ac5bdf7
Fix TestNewWebSessionScopedTrustedDeviceRequirement flakiness (#69506)
bl-nero Aug 13, 2026
b7dea66
MWI: issuance: Add UsageApp support to IssueScopedBotCerts (#69449)
tscolari Aug 13, 2026
bbe840d
docs: Add 'sudo' to teleport-update uninstall command (#69618)
stevenGravy Aug 13, 2026
25a7be0
Connect: add e2e tests for kube access (#65929)
gzdunek Aug 13, 2026
6fc6dc0
discovery: add configurable AWS SSM install timeout (#69102)
michaelpm91 Aug 13, 2026
05419f2
support `where` RBAC on application session recordings (#69630)
tigrato Aug 13, 2026
1338440
MFA service stores and propagates the device ID used to satisfy a cha…
cthach Aug 13, 2026
286ce6d
Change the way e2e logs in for tests, enable unauthenticated tests (#…
ryanclark Aug 13, 2026
adfaab0
iOS: Add SystemClients library to retrieve device metadata (#69341)
gmedori Aug 13, 2026
8ff3d34
iOS: Logging Part 1 – Infrastructure (#69394)
gmedori Aug 13, 2026
a93db58
Add missing license header (#69648)
ravicious Aug 13, 2026
baf3ab1
fix instances ui bug (#69551)
rudream Aug 13, 2026
007a84c
Adjust proto comments after implementing `Approve` and `Deny` RPCs (#…
ravicious Aug 13, 2026
d16e99f
remove all uses of fetchUsers() v1 (#64719)
rudream Aug 13, 2026
c8e2366
Added proxy-only helm chart (#68037)
adamcarheden-teleport Aug 13, 2026
05f8e34
SSO MFA for Admin MFA docs (#67149)
Joerger Aug 13, 2026
dbf752d
Remove teleport.e submodule
doggydogworld Aug 14, 2026
0d7267b
Patches for monorepo migration (#182)
doggydogworld Aug 14, 2026
a9e65b4
Remove RFDs (#240)
r0mant Aug 17, 2026
20b3578
Fix Vite config warning (#302)
ryanclark Aug 18, 2026
490ebd4
Update Go toolchain version to v1.26.6 (#206)
teleport-renovate[bot] Aug 18, 2026
f3a8e93
Fix `tctl access-review` table from overflowing terminal width (#190)
ghassanachi Aug 18, 2026
6d906dc
Migrating PR from gravitational/teleport repo (#232)
gmedori Aug 18, 2026
6dbccdd
Linux: fix potential deadlock/segfault when calling into libnss for u…
okraport Aug 19, 2026
89ba17b
Add knip (#376)
ryanclark Aug 19, 2026
a9b131d
Update Go toolchain version to v1.26.7 (#396)
teleport-renovate[bot] Aug 19, 2026
fa8f9db
Centos Dockerfile fixes (#342)
mjsmithnh Aug 19, 2026
f4370c2
discovery: parallelize region and account fetch in EC2 discovery (#217)
michaelpm91 Aug 19, 2026
08727ab
Refactor and move acl terraform gen from enterprise (#277)
kimlisa Aug 19, 2026
6c97422
Bump github.com/moby/go-archive from 0.2.0 to 0.3.0 (#349)
dependabot[bot] Aug 19, 2026
4c3cb31
app: Add audit event for role v9 HTTP deny (#194)
juliaogris Aug 20, 2026
f433c29
appresource: Add rule and decision types (#195)
juliaogris Aug 20, 2026
43573d9
CI: Fix flaky e/integration tests detector (#343)
kopiczko Aug 20, 2026
0e7339e
Guard against enterprise code being imported in OSS (#432)
rosstimothy Aug 20, 2026
44ba4e6
Adjust E2E CI now that we're in a monorepo (#391)
ryanclark Aug 20, 2026
fc3d8bd
teleport reconfigure (#250)
randal-modowski Aug 20, 2026
700bdad
Make Linux desktop requestable (#397)
probakowski Aug 20, 2026
7cee3c4
Introduce Vitest (#478)
ryanclark Aug 20, 2026
4acf3fa
Close PostgreSQL connection before auto-user teardown (#476)
carrithers Aug 20, 2026
64fc081
Add allowunused tag for bypassing knip (#483)
ryanclark Aug 21, 2026
2f2cd86
Consolidate the vitest cleanup to avoid flaking (#532)
ryanclark Aug 21, 2026
c4e400a
MWI: tbot: Add scoped app access support (output and tunnel) (#291)
tscolari Aug 21, 2026
14128e5
Support pnpm virtual store in Vite config (#463)
ryanclark Aug 21, 2026
1a758ff
Compress UserDisplayName Into Two Layouts (#425)
tele-lion Aug 21, 2026
3a687a3
Regenerate terraform module docs on version update (#513)
GavinFrazar Aug 22, 2026
85d6c8b
legacyjoin: Fix nil pointer deref panics on bad input data (#283)
camscale Aug 24, 2026
a5b95e9
accessmonitoring: Evaluate constrained resources in access requests (…
camscale Aug 24, 2026
2d31f64
discovery: enforce integration on cloud-discovery-group configs in Te…
camscale Aug 24, 2026
298e04f
Scopes support for GitLab CI join (#448)
peterwillis Aug 24, 2026
ebd495b
Upgrade oxlint (#394)
bl-nero Aug 24, 2026
c17f7e8
Add sub-CA cert auth type to sub-kind mapper func. (#252)
cthach Aug 24, 2026
a07bdda
feat: added llm apps proxy support via teleport connect- #68647 (#239)
nibrasohin Aug 24, 2026
100a109
Fix agent not enforcing MFA device lock after in-band MFA. (#224)
cthach Aug 24, 2026
07aa72c
Remove dead HeartbeatV1 code for v19 (server-side) (#502)
Joerger Aug 24, 2026
06f9f14
Remove unused access list matcher plumbing (#347)
tele-lion Aug 24, 2026
95cea18
docs: document EC2 Auto Scaling group discovery (#312)
michaelpm91 Aug 24, 2026
642aa16
Scopes: support `tpm` joining (#289)
timothyb89 Aug 25, 2026
96b2c40
[auto] Update AMI IDs for 18.10.7 (#645)
doggydogworld Aug 25, 2026
3f32994
Update the description of the role request UI flow (#386)
ptgott Aug 25, 2026
f25cc21
More descriptive error for scoped token validation (#628)
peterwillis Aug 25, 2026
2b93e9a
Add a how-to guide for beamctl/beam-init (#389)
ptgott Aug 25, 2026
1283425
Linux desktop access documentation (#490)
probakowski Aug 25, 2026
a72f46b
Sync master with upstream gravitational/teleport
rachita-17 Sep 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .agents/skills
47 changes: 47 additions & 0 deletions .claude/skills/flaky-test/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
name: flaky-test
description: Run when the user asks to investigate, troubleshoot, or fix a flaky Go test.
---

# Flaky Test

You are debugging a flaky test. In Teleport, flaky tests often pass locally on
powerful developer machines, but then fail on constrained CI/CD hardware.

Sometimes the problem is due to the way the test is written, but there are
plenty of occaisions where the flaky test is highlighting a problem in the
implementation itself.

## Steps

1. Try to reproduce the failure. Locate the flaky test and compile a test
binary from the directory containing the test: `go test -c -o flaky.test .`
2. Run the test under the `stress` tool:
`stress -failfast -p 30 ./flaky.test -test.run TestNameHere`.
If `stress` is not installed it can be installed with
`go install golang.org/x/tools/cmd/stress@latest`.
You may need to increase the `-p` (parallelism) flag in order to reproduce
the flake. Avoid increasing the parallelism too much. Anything above `-p 100`
starts to induce failures in common setup logic rather than in the test itself.
3. Read the test to understand what is happening. Add print statements to test
and debug your theories.
4. Attept to fix the flakiness.
5. Repeat step 2 to verify that the flakiness is no longer observed. If the
flakiness still occurs, continue to iterate and re-run the test under
`stress` until it passes consistently.
6. When complete, summarize the cause of the flakiness and the fix that you
came up with. Delete the `flaky.test` binary. Do not make any commits,
the developer will want to review your changes and make adjustments.

## Rules

Prefer deterministic changes like channel-based notifications or
`testing/synctest` over retry-based solutions like `require.Eventually`.
Extending the timeout of a test is usually an anti-pattern. Try to fix the bug
in the implementation or rewrite the test to run faster.

Another way to make tests more reliable is to make them do less. Look for
opportunities to improve the runtime of the test. This might mean optimizing the
underlying code, better isolating the feature under test, or disabling features
that are enabled by default but otherwise unnecessary for the feature being
tested.
289 changes: 288 additions & 1 deletion .github/ISSUE_TEMPLATE/testplan.md
Original file line number Diff line number Diff line change
Expand Up @@ -2242,7 +2242,13 @@ Docs: [IP Pinning](https://goteleport.com/docs/admin-guides/access-controls/guid
- [ ] Verify the custom `okta_import_rule` rule configuration.
- [ ] Verify that users/apps/groups are displayed in the Teleport Web UI.
- [ ] Verify that users/groups are flattened on import, and are not duplicated on sync when their membership is inherited via nested Access Lists.
- [ ] Verify that a user is locked/removed from Teleport when the user is Suspended/Deactivated in Okta.
- [ ] Verify that an Okta-originated Access List cannot be deleted while Access List sync is enabled.
- [ ] Verify that an Okta-originated Access List can be deleted while Access List sync is disabled.
- [ ] Verify that when a user is Suspended/Deactivated in Okta:
- [ ] The user is locked/removed from Teleport.
- [ ] Cleanup assignments are processed and Provision assignments are not processed.
- [ ] Verify that when a user is Removed in Okta:
- [ ] Cleanup assignments are processed and Provision assignments are removed.
- [ ] Verify access to Okta apps granted by access_list/access_request.
- [ ] Verify that Permission granted by Access Request to Okta Resources are revoked after expiration.
- [ ] Verify access request expiration revocation flow when Access List Sync is Enabled.
Expand Down Expand Up @@ -2445,6 +2451,287 @@ Configure SAML using [Quick GitHub/SAML/OIDC Setup Tips] and
- [ ] Verify MCP client can only see allowed tools
- [ ] Verify `deny.mcp.tools` is greedy (deny overrides allow)

## Audit Log Event Queue Manual Test Plan

### 1. Feature flag gating

- [ ] **1.1 Disabled by default**
1. Start an agent with `TELEPORT_UNSTABLE_AUDIT_LOG_RELIABILITY` unset.
2. Expected:
- Log line `Using default in-memory audit event channel. Audit queue is disabled.`
- No `DataDir/audit-queue/` directory is created.
- No `teleport_audit_queue_*` metrics are exported.
- Sessions and audit events still flow normally (legacy behavior preserved).

- [ ] **1.2 Enabled via flag**
1. Restart the same agent with `TELEPORT_UNSTABLE_AUDIT_LOG_RELIABILITY=true`.
2. Expected:
- Log line `Audit queue is enabled.` and `Audit queue initialized.` with
`path`, `max_bytes`, `soft_limit`, `max_attempts`, `dead_letter_ttl`.
- `DataDir/audit-queue/<uuid>/` exists containing `queue.db`, `queue.db-wal`,
`queue.db-shm`, `queue.lock`.
- `teleport_audit_queue_*` metrics appear in `/metrics`.

- [ ] **1.3 `false` is treated as disabled**
1. Set the var explicitly to `false`, `0`, and a garbage value; restart each
time. Expected: behaves as disabled (`ParseBool` failure: disabled).

### 2. Steady-state delivery

- [ ] **2.1 Happy path drains to empty**
1. Enabled agent, healthy backend.
2. Generate events: `tsh bench --duration=30s --rate=50 ssh root@<node> "echo hi"`.
3. Expected:
- Events are delivered to the configured backend and queryable via the audit
log / `tsh` exactly as before the change.
- `teleport_audit_queue_events_enqueued_total` and
`teleport_audit_queue_events_delivered_total` climb roughly together.
- At rest, `teleport_audit_queue_pending` returns to 0 and `queue.db`
row count in `audit_queue` is 0
(`sqlite3 ... 'SELECT COUNT(*) FROM audit_queue;'`).
- DB files stay small.
- `tctl inventory list` shows `0` (or empty) in the `Audit Queue` column for
the agent.

- [ ] **2.2 Delete-after-ack**
1. While load is running, periodically count `audit_queue` rows.
2. Expected: rows are deleted after successful delivery (count does not grow
unbounded). `teleport_audit_queue_batch_size` histogram shows batching
(values > 1 under load).

### 3. Downstream outage & backlog

- [ ] **3.1 Backlog accumulates, then drains on recovery**
1. Enabled agent, healthy backend, light steady load.
2. **Stop** the backend (e.g. stop PostgreSQL).
3. Keep generating events for a few minutes.
4. Expected during outage:
- Sessions continue.
- `teleport_audit_queue_pending` climbs into the thousands,
`audit_queue` row count grows.
- `tctl inventory list` `Audit Queue` column shows the growing pending count
for this agent.
5. **Start** the backend again.
6. Expected after recovery:
- Pending drains back to 0.
- `teleport_audit_queue_events_delivered_total` catches up.
- All events emitted during the outage are present in the backend (no loss),
subject to the 5 GiB hard limit not being hit.
- No operator action was required.

### 4. Retries & dead-letter queue

- [ ] **4.1 Exhausted retries move to dead-letter**
1. Set a low `max_attempts` (e.g. `2`) and a short
`dead_letter_sweep_interval` (e.g. `30s`) in `teleport.yaml`; restart agent.
2. Stop the backend and emit a batch of events.
3. Expected:
- After each event exceeds `max_attempts`, it is moved to
`audit_dead_letter` (verify `SELECT COUNT(*) FROM audit_dead_letter;`).
- `teleport_audit_queue_dead_letter_total` increments.
`teleport_audit_queue_dead_letter_pending` reflects the DL depth.
- `tctl inventory list` shows the ` (N DL)` suffix in the `Audit Queue`
column.

- [ ] **4.2 Dead-letter sweeper redelivers on recovery**
1. With events sitting in the dead-letter queue, **start** the backend.
2. Expected: within ~`dead_letter_sweep_interval`, the sweeper redelivers the
dead-letter events. `audit_dead_letter` count returns to 0. Events land in
the backend. Pending and DL gauges return to 0.
3. Inject a row into `audit_queue` whose `payload` is not a valid
event. Ensure it is moved to the `corrupt_events` table.

- [ ] **4.3 Dead-letter TTL expiry**
1. Set a very short `dead_letter_ttl` (e.g. `1m`) and keep the backend down so
redelivery keeps failing.
2. Expected: dead-letter events older than the TTL are permanently deleted;
`teleport_audit_queue_dead_letter_expired_total` increments; Expiry is
logged.

### 5. Limits: soft limit & hard limit

- [ ] **5.1 Soft limit warning**
1. Set `soft_limit` very low (e.g. `1MiB`). Stop the backend. Emit enough events
to exceed it.
2. Expected
- Repeated WARN log `audit event queue above soft limit` with `size_bytes`
and `soft_limit_bytes`.
- `teleport_audit_queue_soft_limit_warnings_total` increments.
- Events continue to be accepted (soft limit does not drop events).

- [ ] **5.2 Hard limit returns error (drop, no back-pressure, don't fill disk)**
1. Set `hard_limit` low (e.g. `16MiB`), backend down. Emit until full.
2. Expected:
- Once `max_page_count` is hit, SQLite returns full. `Enqueue` returns
`ErrQueueFull`. `EmitAuditEvent` logs
`Failed to emit audit event. Audit queue is full.` and returns an error to
its caller.
- The DB file does **not** grow past the configured hard limit. The disk is
not filled (Option 1 "drop + log", per Open Question 1).
- Sessions/workloads are **not** back-pressured/slowed by the full queue.

### 6. Restart with backlog & graceful shutdown

- [ ] **6.1 Clean shutdown drains within grace period**
1. Backend healthy, build a modest backlog by briefly pausing the backend, then
resume; while pending > 0, send the agent a graceful shutdown signal
(`SIGQUIT`).
2. Expected:
- Drain runs: stops adopting orphans, makes a best-effort attempt to flush
pending events to the backend before exiting, then closes the DB and
releases `queue.lock`.
- If drain completes within the grace period, `audit_queue` is empty and the
`<instance-id>` directory is gone (or empty) after exit.

- [ ] **6.2 Backlog survives a hard restart and is recovered as an orphan**
1. Build a backlog with the backend **down**. Hard-kill the agent
(`kill -9`) so the queue cannot drain.
2. Expected: the `<instance-id>` directory with `queue.db` and queued rows
remains on disk.
3. Restart the agent. Bring the backend up.
4. Expected:
- The new process's orphan scanner finds the old directory, takes the
`flock`, drains its events to the backend, then deletes the old directory.
- `teleport_audit_queue_orphans_adopted_total` increments.
- The events buffered before the crash are delivered (no loss, assuming
durable disk). Cross-check counts against what was emitted pre-crash.

### 7. Per-process isolation & orphan adoption

- [ ] **7.1 Fresh DB per process**
1. Restart an agent several times. Expected: each start creates a **new**
`<uuid>/` directory. A healthy prior directory is adopted+drained+removed by
the new process (steady state should converge to a single live directory).

- [ ] **7.2 Race-safe creation (`.tmp` ignored)**
1. While an agent is initializing, confirm no other co-located process adopts an
in-progress directory: the directory exists as `<uuid>.tmp/` until init
completes, and orphan scanning skips `*.tmp`. (Can be observed by listing
`audit-queue/` quickly at startup, or trust the rename ordering.)
2. Manually drop a stale `<uuid>.tmp/` directory older than 1h into
`audit-queue/` (set its mtime back). Expected: the orphan scanner removes it
as stale rather than adopting it.

- [ ] **7.3 Corrupt prior DB does not block startup**
1. Stop an agent cleanly so a directory with a `queue.db` remains (or fabricate
an orphan directory containing a deliberately corrupted `queue.db` plus a
`queue.lock`).
2. Start the agent. Expected:
- The process starts on a fresh queue regardless of the corrupt orphan
(per-process isolation limits blast radius).
- Attempting to adopt the corrupt orphan logs an error and increments
`teleport_audit_queue_orphan_scan_errors_total`. The agent keeps running.

- [ ] **7.4 Multiple processes sharing one DataDir**
1. Run two agents with the **same** `DataDir`. Expected: each owns its own
`<uuid>/` queue and `queue.lock`. Neither double-sends the other's events.
When one exits uncleanly, the other adopts and drains its orphan.

### 8. Auth server fallback path

- [ ] **8.1 Auth queues only on primary-backend failure**
1. Enable the flag on Auth. With the audit backend healthy, generate events.
Expected: **no** files written under Auth's `audit-queue/` and
`teleport_audit_fallback_queued_events_total` stays 0 (normal path bypasses
disk).
2. Stop the audit backend so Auth's own emits fail. Trigger an Auth-originated
audit event.
Expected: the event is enqueued to Auth's fallback queue,
`teleport_audit_fallback_queued_events_total` increments, and it is
redelivered when the backend recovers.

- [ ] **8.2 Forwarded agent events are not adopted by Auth**
1. With the audit backend down, have an **agent** emit events that are forwarded
to Auth over gRPC.
2. Expected: Auth does **not** queue these (they are marked forwarded); the
gRPC `EmitAuditEvent` returns the error to the agent, and the **agent's**
queue retains/retries them. Confirms ownership stays with the originator and
events are not double-buffered.

### 9. Configuration parsing & application

- [ ] **9.1 Valid config is honored**
1. Set every `audit_queue` option to non-default values, e.g.:
```yaml
teleport:
audit_queue:
soft_limit: 50MiB
hard_limit: 1GiB
max_attempts: 3
dead_letter_ttl: 24h
dead_letter_sweep_interval: 1m
orphan_scan_interval: 2m
synchronous: FULL
backend: ["sqlite_disk"]
```
2. Expected: process starts. `Audit queue initialized.` log reflects the
configured `soft_limit`/`max_attempts`/`dead_letter_ttl`. Behavior in earlier
sections matches these values. Confirm `synchronous=FULL` is applied
(read-only: `sqlite3 'file:queue.db?mode=ro' 'PRAGMA synchronous;'`: `2`).

- [ ] **9.2 Invalid config is rejected**
1. `synchronous: BOGUS`: expected startup/config error:
`invalid audit_queue.synchronous ... must be "NORMAL" or "FULL"`.
2. `soft_limit: notabyte` / `hard_limit: notabyte`: expected
`invalid audit_queue.soft_limit`/`hard_limit` parse error.

- [ ] **9.3 Defaults applied when omitted**
1. Enable flag with no `audit_queue` block. Expected: defaults from the
implementation-facts section (100 MiB soft, 5 GiB hard, 10m scan, NORMAL).

### 10. In-memory backend & fallback ordering

- [ ] **10.1 `sqlite_memory` standalone**
1. `backend: ["sqlite_memory"]`. Expected: queue works in-memory; **no**
`queue.db` files on disk. Events deliver in steady state. Backlog is lost on
restart (documented trade-off).

- [ ] **10.2 Fallback ordering**
1. `backend: ["sqlite_disk", "sqlite_memory"]`. With a writable DataDir,
expected: `sqlite_disk` is used, no fallback warning.
2. Force disk init to fail (e.g. make `DataDir/audit-queue` a file instead of a
directory. Expected: process falls back to `sqlite_memory`, logs
`Using fallback audit queue backend.` and
`Failed to create audit queue backend, trying next.`. The agent still runs.

- [ ] **10.3 Unknown backend**
1. `backend: ["bogus"]`. Expected: startup error
`unknown audit queue kind: 'bogus'` (no silent fallback to default).

### 11. Observability & operator UX

- [ ] **11.1 Metrics presence & correctness**
1. Confirm all `teleport_audit_queue_*` series listed in implementation-facts
are exported and move as expected through the scenarios above (enqueued,
delivered, pending, retries, dead_letter, soft_limit_warnings,
orphans_adopted, batch_size). The `pending`/`dead_letter_pending` gauges
carry a `queue` label (the per-process directory name).

- [ ] **11.2 `tctl inventory list`**
1. With a backlog on one agent, run `tctl inventory list`. Expected: the
`Audit Queue` column shows that agent's pending count; agents with
dead-letter events show `(N DL)`. Agents not reporting show empty.
2. `tctl inventory list --sort=audit-queue`. Expected: agents ordered by largest
pending queue first.
3. Confirm queue depth is reported on the next inventory heartbeat.

- [ ] **11.3 Structured logging**
1. Spot-check that the key lifecycle/diagnostic logs are structured and present:
`Audit queue initialized.`, `audit event queue above soft limit`,
`Audit queue is full.`, orphan adoption errors, dead-letter expiry.

### 12. Versioning & on-disk format

- [ ] **12.1 Version recorded**
1. Read `teleport_info` from `queue.db` (read-only):
`sqlite3 'file:queue.db?mode=ro' 'SELECT key,value FROM teleport_info;'`.
Expected: a row recording the running Teleport version.

- [ ] **12.2 Schema & inspectability**
1. `.tables` shows `audit_queue`, `audit_dead_letter`, `teleport_info`,
`corrupt_events`. Confirms the RFD's "well-understood file format / standard
tooling" criterion (ops can inspect/back up with `sqlite3`).

## CA overrides

Validate downstream configuration and protocol access, using an enabled
Expand Down
15 changes: 12 additions & 3 deletions .github/workflows/assign.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,24 +26,33 @@ permissions:
repository-projects: none
security-events: none
statuses: none
id-token: write

jobs:
auto-request-review:
name: Auto Request Review
if: ${{ !github.event.pull_request.draft && !startsWith(github.head_ref, 'dependabot/') }}
runs-on: ubuntu-latest
steps:
- name: Get runtime values from kvstore
id: kvstore
uses: gravitational/shared-workflows/tools/env-kvstore@tools/env-kvstore/v1.0.2
with:
cognito-identity-pool-id: "us-west-2:da53389e-a459-4a28-bd54-43eeb8e4b579"
cognito-role-arn: "arn:aws:iam::247230412011:role/github-actions-cognito-oidc"
values: |
REVIEWERS,secret
# Checkout main branch of shared-workflow repository.
- name: Checkout shared-workflow
uses: actions/checkout@v6
with:
repository: gravitational/shared-workflows
path: .github/shared-workflows
ref: 02af65890b521ecdf79856c00f6d2c875bf40ea3 # workflows/v0.0.5
ref: 986f92841a4f032e262477e5bb15f214d50b1015 # workflows/v0.0.6
- name: Installing Go
uses: actions/setup-go@v6
uses: actions/setup-go@v7
with:
go-version: 'stable'
# Run "check" subcommand on bot.
- name: Assigning reviewers
run: cd .github/shared-workflows/bot && go run main.go -workflow=assign -token="${{ secrets.GITHUB_TOKEN }}" -reviewers="${{ secrets.reviewers }}"
run: cd .github/shared-workflows/bot && go run main.go -workflow=assign -token="${{ secrets.GITHUB_TOKEN }}" -reviewers="${{ env.REVIEWERS }}"
2 changes: 1 addition & 1 deletion .github/workflows/aws-e2e-tests-non-root.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ jobs:
continue-on-error: true

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@a03048d87541d1d9fcf2ecf528a4a65ba9bd7838 # v5.0.0
uses: aws-actions/configure-aws-credentials@ec61189d14ec14c8efccab744f656cffd0e33f37 # v6.1.0
with:
aws-region: ${{ env.AWS_REGION }}
role-to-assume: ${{ env.GHA_ASSUME_ROLE }}
Expand Down
Loading
Loading