Commit Graph
26995 Commits
Author SHA1 Message Date
Ryan Clark de6fd032d6 Composite cursor in Rust (#66697)
* Composite the cursor in Rust during ResizeCrop

* Apply code review feedback

* Update test

* Move CursorBitmap to an enum, remove Cow, avoid cloning the bitmap

* Remove dereference

* Invalidate E2E Rust cache on decoder changes
2026-06-10 09:27:47 +00:00
Noah Stride 6c846235ed Remove CreateWebSession HTTP RPC pathway (#67615)
* Remove CreateWebSession HTTP RPC path for creation of new web sessions

* Rename create -> extendWebSession
2026-06-10 08:41:52 +00:00
Forrest 6757719beb scoped api level authz rework (#67133) 2026-06-09 23:58:10 +00:00
Gavin Frazar 6b368c0234 Quote VERSION in docs make recipe (#67639)
VERSION can be empty if there is an error running get-version.
Quote the arg so that empty VERSION is detected and returns
an error when running make docs.
2026-06-09 22:46:53 +00:00
Tim Buckley b6d7613992 MWI: Ignore user_login_state for bots (#66737)
* MWI: Ignore `user_login_state` for bots

This change is part of a fix for gravitational/teleport#63920, where
the Okta usermonitor will inadvertently create unneccessary ULS
entries for bots when they are deleted. Normally, these ULS entries
are sane, but if the bot is deleted and recreated too quickly, there's
a race.

Here's the sequence of events:
1. The user creates a bot (`tctl bots add` or similar)
2. The usermonitor watcher catches the OpPut and creates a sane ULS
   entry
3. The user deletes the bot (`tctl bots rm ...`)
4. The usermonitor watcher catches the OpDelete and replaces the sane
   ULS with an empty variant, with no roles or labels.
5. The user recreates the bot (`tctl bots add ...`)
6. One of two events happens first:
   1. The usermonitor watcher catches the OpPut and replaces the bad
      ULS with a sane variant.
   2. The bot joins and receives certificates

If 6.1 occurs before 6.2, the bot joins normally and receives valid
certificates. If 6.2 occurs before 6.2, the bot is issued certs with
roles derived from the bad ULS (i.e. empty list) and fails to start
due to the invalid cert bundle.

In my testing, the race window is ~1 second. I see a ~10% failure rate
if the bot is joined within 0.5 seconds of being recreated, and a 50%
failure rate if the bot is joined immediately (well, as immediately as
tbot can start after `tctl bot add ...` returns). Bot joins generally
succeed if there's >= 1 second between recreate and join.

The associated teleport.e makes the usermonitor ignore bots so new
invalid ULS entries won't be created. However, this isn't sufficient
to fix the bug for existing clusters. This PR adds 2 additional fixes:
- `GetUserOrLoginState()` always returns the user variant for bots,
  ignoring any potential ULS.
- Deleting a bot now deletes any ULS entry for the bot

See also: https://github.com/gravitational/teleport.e/pull/8773

* Fix failing test
2026-06-09 22:30:37 +00:00
Tim Buckley fc15432d97 Bump e (#67589)
This bumps e/ to include 5956f8b9efc643a127fb010664e511ae334bcadd, a
fix for invalid user_login_state for bots.
2026-06-09 22:16:37 +00:00
Kevin f63ce7cecc Implement auth checks for RBAC rule review_requests.submit_for_users (#66230) 2026-06-09 20:11:23 +00:00
Ben ArentandPaul Gottschling 0f8210cdb7 Add teleport-session-review skill for Session Recordings + Session Recording Search (#67491)
* First Draft of teleport-session-review skill

Framework based on ACL skill

* Adds Examples and Playbook for how to use Session Search

* Add a preflight check

* Feedback from Docs

* Extra Testing on a Teleport Cloud Tenant

* Docs to Skill

* Remove local dev for now

* update locate commands to include $TSH

* Update docs/pages/identity-security/session-summaries/session-search.mdx

Co-authored-by: Paul Gottschling <paul.gottschling@goteleport.com>

* Remove Filter caveats

These have been fixed

---------

Co-authored-by: Paul Gottschling <paul.gottschling@goteleport.com>
2026-06-09 19:55:56 +00:00
Kevin ed080fa018 Add Slack Socket Mode client for app interactions (#67148)
* Add slack socketmode client

* Address feedback; extend status; increase write wait

* Apply auto-reset to retry attempts counter

* Add link_disabled as fatal error

* Address feedback; change omitempty to omitzero
2026-06-09 17:54:44 +00:00
Lion Chen f3c6f65e1c Document User Display Names and How Teleport Derives Them (#67459)
* Document user display names and how Teleport derives them

* remove redundant notes on display name behavior in user types documentation

* drop unnecessary word

* refine user display name mapping for Okta, Microsoft Entra ID, SAML/OIDC, and SCIM integrations

* refactor: streamline display name documentation across identity provider integrations

* update user display name documentation

* improve clarity and consistency in user display name documentation
2026-06-09 16:05:28 +00:00
Marco Dinis ab4c46b0cd Server Discovery: fix sudo->sudo-rs migration for ubuntu 25.10+ (#67522) 2026-06-09 14:19:23 +00:00
dependabot[bot]andTiago Silva f997e37f41 Bump github.com/quic-go/quic-go from 0.57.0 to 0.59.1 (#67453)
* Bump github.com/quic-go/quic-go from 0.57.0 to 0.59.1

Bumps [github.com/quic-go/quic-go](https://github.com/quic-go/quic-go) from 0.57.0 to 0.59.1.
- [Release notes](https://github.com/quic-go/quic-go/releases)
- [Commits](https://github.com/quic-go/quic-go/compare/v0.57.0...v0.59.1)

---
updated-dependencies:
- dependency-name: github.com/quic-go/quic-go
  dependency-version: 0.59.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* go-mod-tidy-all

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tiago Silva <tiago.silva@goteleport.com>
2026-06-09 14:13:02 +00:00
Alan Parraandrosstimothy fbc47e7d37 Add public docs for the CA override feature (#67403)
* Add public docs for the CA override feature

* Use `code` blocks instead of `shell`

* Number steps as n/d. Move alternatives to H3.

* Move intro paragraphs to "How it works"

* Remove "Supported CAs" section, move its contents to other sections

* Mention specific commands in the info box

* Emphasize future growth

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>

---------

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>
2026-06-09 14:00:58 +00:00
dependabot[bot] 648d2c1060 Bump the go group across 1 directory with 5 updates (#67546)
Bumps the go group with 5 updates in the /build.assets/tooling directory:

| Package | From | To |
| --- | --- | --- |
| [buf.build/go/bufplugin](https://github.com/bufbuild/bufplugin-go) | `0.9.0` | `0.10.0` |
| [github.com/DataDog/datadog-agent/pkg/template](https://github.com/DataDog/datadog-agent) | `0.77.2` | `0.79.2` |
| [golang.org/x/mod](https://github.com/golang/mod) | `0.35.0` | `0.36.0` |
| [golang.org/x/tools](https://github.com/golang/tools) | `0.44.0` | `0.45.0` |
| [helm.sh/helm/v3](https://github.com/helm/helm) | `3.20.2` | `3.21.0` |



Updates `buf.build/go/bufplugin` from 0.9.0 to 0.10.0
- [Release notes](https://github.com/bufbuild/bufplugin-go/releases)
- [Changelog](https://github.com/bufbuild/bufplugin-go/blob/main/RELEASE.md)
- [Commits](https://github.com/bufbuild/bufplugin-go/compare/v0.9.0...v0.10.0)

Updates `github.com/DataDog/datadog-agent/pkg/template` from 0.77.2 to 0.79.2
- [Release notes](https://github.com/DataDog/datadog-agent/releases)
- [Changelog](https://github.com/DataDog/datadog-agent/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/DataDog/datadog-agent/compare/pkg/api/v0.77.2...pkg/api/v0.79.2)

Updates `golang.org/x/mod` from 0.35.0 to 0.36.0
- [Commits](https://github.com/golang/mod/compare/v0.35.0...v0.36.0)

Updates `golang.org/x/tools` from 0.44.0 to 0.45.0
- [Release notes](https://github.com/golang/tools/releases)
- [Commits](https://github.com/golang/tools/compare/v0.44.0...v0.45.0)

Updates `helm.sh/helm/v3` from 3.20.2 to 3.21.0
- [Release notes](https://github.com/helm/helm/releases)
- [Commits](https://github.com/helm/helm/compare/v3.20.2...v3.21.0)

---
updated-dependencies:
- dependency-name: buf.build/go/bufplugin
  dependency-version: 0.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go
- dependency-name: github.com/DataDog/datadog-agent/pkg/template
  dependency-version: 0.79.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go
- dependency-name: golang.org/x/mod
  dependency-version: 0.36.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go
- dependency-name: golang.org/x/tools
  dependency-version: 0.45.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go
- dependency-name: helm.sh/helm/v3
  dependency-version: 3.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-09 13:26:39 +00:00
Marek Smoliński 5cee7e2c7a SCIM: Add rate limit proto settings (#66826) 2026-06-09 13:06:45 +00:00
Andrew LeFevre 9f9f7a639d expose error when PAM fails to write to stream (#67570) 2026-06-09 13:05:54 +00:00
Steven Martin 14ec04c008 docs: Bound keypair fixes (#67588)
* docs: Bound keypair fixes

* docs: fix indentation
2026-06-09 12:49:57 +00:00
dependabot[bot] 3e6fe4e654 Bump github.com/hashicorp/terraform-plugin-testing (#67555)
Bumps the go group with 1 update in the /integrations/terraform-mwi directory: [github.com/hashicorp/terraform-plugin-testing](https://github.com/hashicorp/terraform-plugin-testing).


Updates `github.com/hashicorp/terraform-plugin-testing` from 1.15.0 to 1.16.0
- [Release notes](https://github.com/hashicorp/terraform-plugin-testing/releases)
- [Changelog](https://github.com/hashicorp/terraform-plugin-testing/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hashicorp/terraform-plugin-testing/compare/v1.15.0...v1.16.0)

---
updated-dependencies:
- dependency-name: github.com/hashicorp/terraform-plugin-testing
  dependency-version: 1.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-09 12:25:39 +00:00
Jake Alti d08509b84d Add proxy verb to kubernetes_resources (#67583)
* Add proxy verb to kubernetes_resources

* Preserve upstream kube Status code in forwarder

* Readable comment

* Strip [scheme:]name[:port] on kube proxy paths

* Use SplitSchemeNamePort from k8s apimachinery
2026-06-09 12:23:50 +00:00
Marek Smoliński 0404d46d73 SCIM Client rate limiting error (#67313)
* SCIM Client rate limiting error

* update
2026-06-09 12:23:29 +00:00
Noah Stride 42829df6c5 Refactor ListWorkloadIdentities to RangeWorkloadIdentities (#67504)
* Introduce RangeWorkloadIdentities

* inline matchWorkloadIdentity

* simplify test on resource service

* simplify tests in cache

* golint

* Leverage `stream.Fail`

* OPAQUE
2026-06-09 09:56:21 +00:00
Marco Dinis 5815616cd9 Server Discovery: use /opt/teleport when checking for disk space (#67444)
When Discovery Service tries to install teleport in a given instance, so
that it can join the cluster, it first does a couple of preflight checks:
- sudo, bash, curl commands exist?
- enough disk space?
- ...

When checking for disk space we are using /opt folder.
Howevers VMs can have a specific mount point for the /opt/teleport.

This changes ensures we check the correct folder, and in order.
So, if /opt/teleport exists, that's the folder that will be used when
checking for required space.
2026-06-09 09:51:28 +00:00
nixpig 6f88342fca Add Okta assignment target status to tctl resource output (#67498) 2026-06-09 09:19:44 +00:00
Alex Carrithers 8de3b4f238 tctl: add structured output to status commands (#67201)
* tctl: add structured output to status commands

* tctl: use test context in auto update agent status tests
2026-06-09 08:36:53 +00:00
Angel Dionisio 5c925211cc Make build.assets/Dockerfile-centos7 Kaniko-compatible (#67272)
* make CentOS 7 Dockerfiles Kaniko-compatible

* normalize CentOS 7 buildlogs arch names
2026-06-08 21:46:41 +00:00
Ben Arent d98ef2bfb9 Bump Date for Identity Activity Center (#65530) 2026-06-08 20:45:31 +00:00
Steven Martin 103298a129 docs: Fix k8s enrollment pages (#67465)
* docs: Fix k8s enrollment pages

* docs: Update minimal set of roles
2026-06-08 19:51:15 +00:00
Jake AltiandEdoardo Spadolini 0bb1c4638a kube: cap TLS handshake to 15s on kube proxy listener (#67158)
* kube: cap TLS handshake to 15s

* kube: modernize handshake listener tests with synctest

* update tests

* kube: fix testifylint

* kube: keep accept loop alive past transient errors

* kube: bound handshake via WriteTimeout reset

* kube: log instead of panic on deadline reset

* kube: test handshake bound and stream reset

* Apply suggestion from @espadolini

Co-authored-by: Edoardo Spadolini <edoardo.spadolini@goteleport.com>

* kube: fix synctest deadlock in long-handler test

* kube/grpc: update WriteTimeout assertion

---------

Co-authored-by: Edoardo Spadolini <edoardo.spadolini@goteleport.com>
2026-06-08 19:29:47 +00:00
Lion Chen c8d24fdd61 Surface User Display Names in the Web Users Page and User Details (#67406)
* Surface user display names in web Users page and user details

* Refactor user authentication type display and update related tests

* reduce code churn

* add 16px back

* Refactor UserDisplayName component for improved layout and update related tests

* Refactor UserDetails tests to improve rendering checks and remove unnecessary assertions
2026-06-08 19:18:52 +00:00
Alan Parra 34354310c7 Migrate subca protos using open2opaque (#67559) 2026-06-08 18:33:16 +00:00
Pavel 2265165125 Improve role expressions validation (#66030)
* add session filter, access predicate, impersonate checks; fail fast on invalid expressions at create/update

* add list indexes to role validation error messages

* reject wildcards in search_as_roles and preview_as_roles

* validate join_sessions and require_session_join fields

* include index and tool value in mcp.tools validation error

* update commentary

* aggregate errors in ValidateRole

* aggregate errors in ValidateAccessPredicates

* validate linux_desktop_logins templates
2026-06-08 17:35:49 +00:00
Edoardo Spadolini 98bdeb0540 Fix missing early return in reverse tunnel transport handler (#67560) 2026-06-08 17:14:06 +00:00
Lion Chen af259fe33f Add Shared Server-Side Username Display Resolver (#67411)
* Add shared server-side username display resolver

* move functions into users

* wording
2026-06-08 16:16:09 +00:00
Zac Bergquist de64834bf5 Fix copy-paste bug in proxy cluster dialer (#67410)
In the fallback path when addresses are pulled from the context,
we were incorrectly setting the destination address to the source
address, which results in incorrect auditing.
2026-06-08 15:27:31 +00:00
teleport-renovate[bot]andChris Thach 04471ea746 Update Go version to v1.26.4 (#67476)
* Update Go version to v1.26.4

* Rm GO_VERSION from Makefile/Dockerfile and rely on go.mod to inform Go version. Update code to adhere to 1.26 deprecation/changes.

Signed-off-by: Chris Thach <chris.thach@goteleport.com>

* Bump e to 54d1d0cb67b71860b943de477b3146d32ccdd74a.

Signed-off-by: Chris Thach <chris.thach@goteleport.com>

---------

Signed-off-by: Chris Thach <chris.thach@goteleport.com>
Co-authored-by: teleport-renovate[bot] <275214890+teleport-renovate[bot]@users.noreply.github.com>
Co-authored-by: Chris Thach <chris.thach@goteleport.com>
2026-06-08 14:28:40 +00:00
Steven Martin e72c33426c docs: Helm fixes (#67529) 2026-06-08 13:56:32 +00:00
rosstimothy 02a758b23a [2] Migration to the Opaque API (#67384)
* Convert existing non-gogo codegen to the Hybrid API

Contributes to https://github.com/gravitational/teleport/issues/66776.

All existing protos explicitly set to API_OPEN have been change to
API_HBYRID. The new codegen was performed via make grpc. There are no
other functional changes to the code to start consuming the Hybrid API
those will come later. The intent is to get all Hybrid codegen in and
backported to ease the transition.

* Initial migration to the Opaque API

Contributes to https://github.com/gravitational/teleport/issues/66776.

All of the changes here are mechanical conversions generated from
`open2opaque rewrite -levels=green ./...`. There will be a follow up
to this in teleport.e which does the same. Once all changes have been
merged the process will be repeated with -levels=yellow followed by
-levels=red.


See https://protobuf.dev/reference/go/opaque-migration/ for more
details.

* [2] Migration to the Opaque API

Contributes to #66776.

All of the changes here are mechanical conversions generated from
open2opaque rewrite -levels=yellow./.... There will be a follow up
to this in teleport.e which does the same. Once all changes have been
merged the process will be repeated with -levels=red.

See https://protobuf.dev/reference/go/opaque-migration/ for more details.
2026-06-08 13:21:41 +00:00
Tiago Silva 679d627839 Fix tctl recordings search pagination and surface fetch errors (#67545)
"Load more" in the recordings search TUI (and --resume-token) failed with
"start_time is required" after the latest access graph update.
Follow-up pages were sent with only the batch_token, relying on the
proto comment that claimed all other filter fields are ignored
once batch_token is set. That contract is wrong: the server validates
and applies start_time/end_time and every other filter on each request,
and the access graph re-checks that the checkpoint falls
within the requested time range.

The batch token is intentionally only a cursor and does not carry the full
search state - encoding every filter into the token would let it grow to
very large sizes. So the original request must be replayed with the
batch_token set on each page. Build the request once and have the fetcher
clone it and attach the token for the initial page, resume, and load-more,
fixing both the TUI and --resume-token.

Also surface the fetch error back to the user: a failed "load more" now
opens a popup with a red header and the server message rendered as code,
instead of silently swallowing the error behind a "(retry)" label.

Signed-off-by: Tiago Silva <tiago.silva@goteleport.com>
2026-06-08 12:10:40 +00:00
Luke Okraszewski e16138c704 Fix error in List calls terminating iteration too early on failure (#67466)
* Fix error in list helpers terminating iteration too early on unmarshal failure

The List calls in generic in a handful of handrolled implementations would pass
`Limit` to `s.Backend.Items`. This means that if enough items fail to unmarshall
in the loop we could exit early and never return the next page token.

* also fix plugins and friends

* spelling
2026-06-08 11:35:32 +00:00
Ryan Clark c61782ed0e Resize RDP images in Rust instead of Go (#66696)
* Resize RDP images in Rust instead of Go

* go mod tidy all

* cargo fmt

* Add tests

* Remove unused Thumbnail()

* Change ResizeCrop() to return an error

* Avoid hard-coding the bytes per pixel

* Release resources in tests

* Clamp dimensions to at least 1x1

* Add x/image to e_imports

* Fix linting

* Fold resize options and crop bounds check into resize_crop_into

* Run cargo fetch
2026-06-08 11:00:18 +00:00
Maja Cieślak 0f503997db Update tmp and brace-expansion (#67448)
* Update tmp

* Update brace-expansion
2026-06-08 10:34:21 +00:00
Pawel Kopiczko b401b349a6 Add .claude to .gitignore (#66889) 2026-06-08 08:26:30 +00:00
Zac Bergquist 1382e3c5ce protoreader: prevent panic on large/corrupted message (#67409) 2026-06-07 22:17:23 +00:00
Zac Bergquist 49d40720aa Clean up desktop alerts (#67295)
Fix some special casing for the light theme that caused
the alerts to look different (with a full border).

Fix the ability to dismiss the alerts by clicking anywhere
outside. (We were never setting the ref correctly so this
functionality wasn't working).

Improve the styling with some padding, a divider, and
consistent width.

Lastly, avoid specifying the entire alert content as the
title, which renders in bold. Large amount of bold text
are difficult to read.
2026-06-07 21:51:00 +00:00
Steven Martin 1ade712791 docs: Reference doc updates (#67151)
* docs: Reference doc updates

* docs: correct desktop.directory.write audit reference
2026-06-07 19:15:44 +00:00
Tyler Richardson 5c5723b188 Re-add /tokens/register HTTP route with an explicit "too old" error (#67524)
The legacy RegisterUsingToken HTTP route was removed in #53110. Outdated
agents still attempting to join via this endpoint receive a 404, which
gives operators no actionable indication of the real problem.

Re-add POST /:version/tokens/register with a handler that returns an
AccessDenied error telling the client it is too old and which version to
upgrade to.

Part of #64567.
2026-06-06 01:26:49 +00:00
Maxim aad99a49db fix: Compute features for agentless AppServer resources (#67489)
Agentless resources (integration app servers, or tctl/gRPC-created) have
no agent to heartbeat ComponentFeatures to presence/the unifiedresources
aggregation layer. Compute from resource type instead of reading the
spec field for these.
2026-06-05 22:40:07 +00:00
Andrew LeFevre 6f11a4a57f handle allowed bpf events in SSH access permit consistently (#66919)
* handle allowed bpf events in SSH access permit consistently

* log error if closing the session fails

* fix tests failing

* add regression test
2026-06-05 21:45:35 +00:00
Andrew LeFevreandErik Tate 6dacb41989 check arguments for NULL in converse PAM converse func, trim trailing newlines in user input (#67481)
* check arguments for NULL in converse PAM converse func, trim trailing newlines in user input

* Update session/pam/pam.c

Co-authored-by: Erik Tate <erik.tate@goteleport.com>

---------

Co-authored-by: Erik Tate <erik.tate@goteleport.com>
2026-06-05 21:36:12 +00:00
Andrew LeFevre 2a0d84e69f multiple small fixes around PAM error handling and cleanup (#67278)
* ensure PAM retval is always valid when calling pam_end, prevent deadlock in PAM.free()

* don't call PAM.free in PAM.codeToError, require explicit cleanup to avoid confusion

* unregister handler if Open fails

* always return an error from codeToError
2026-06-05 21:16:29 +00:00