---
name: "thread-keyring"
section: "7"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/thread-keyring"
---

# thread-keyring(7)

per-thread keyring

## NAME

thread-keyring - per-thread keyring

## DESCRIPTION

The thread keyring is a keyring used to anchor keys on behalf of a process. It is created only when a thread requests it. The thread keyring has the name (description) *\_tid*.

A special serial number value, **KEY\_SPEC\_THREAD\_KEYRING**, is defined that can be used in lieu of the actual serial number of the calling thread's thread keyring.

From the [**keyctl**(1)](/keyctl/1.md) utility, '**@t**' can be used instead of a numeric key ID in much the same way, but as [**keyctl**(1)](/keyctl/1.md) is a program run after forking, this is of no utility.

Thread keyrings are not inherited across [**clone**(2)](/clone/2.md) and [**fork**(2)](/fork/2.md) and are cleared by [**execve**(2)](/execve/2.md). A thread keyring is destroyed when the thread that refers to it terminates.

Initially, a thread does not have a thread keyring. If a thread doesn't have a thread keyring when it is accessed, then it will be created if it is to be modified; otherwise the operation fails with the error **ENOKEY**.

## SEE ALSO

[**keyctl**(1)](/keyctl/1.md), [**keyctl**(3)](/keyctl/3.md), [**keyrings**(7)](/keyrings/7.md), [**persistent-keyring**(7)](/persistent-keyring/7.md), [**process-keyring**(7)](/process-keyring/7.md), [**session-keyring**(7)](/session-keyring/7.md), [**user-keyring**(7)](/user-keyring/7.md), [**user-session-keyring**(7)](/user-session-keyring/7.md)
