{
    "content": [
        {
            "type": "text",
            "text": "# AA-STATUS (man)\n\n## NAME\n\naa-status - display various information about the current AppArmor policy.\n\n## SYNOPSIS\n\naa-status [option]\n\n## DESCRIPTION\n\naa-status will report various aspects of the current state of AppArmor confinement. By\ndefault, it displays the same information as if the --verbose argument were given. A sample\nof what this looks like is:\n\n## TLDR\n\n> List currently loaded AppArmor modules.\n\n- Check status:\n  `sudo aa-status`\n- Display status in JSON format:\n  `sudo aa-status --json`\n- Display status in pretty JSON format:\n  `sudo aa-status --pretty-json`\n- Display the number of loaded policies:\n  `sudo aa-status --profiled`\n- Display the number of loaded enforicing policies:\n  `sudo aa-status --enforced`\n- Display the number of loaded non-enforcing policies:\n  `sudo aa-status --complaining`\n- Display the number of loaded enforcing policies that kill tasks:\n  `sudo aa-status --kill`\n\n*Source: tldr-pages*\n\n## Sections\n\n- **NAME**\n- **SYNOPSIS**\n- **DESCRIPTION**\n- **OPTIONS** (10 subsections)\n- **EXIT STATUS**\n- **BUGS**\n- **SEE ALSO**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "AA-STATUS",
        "section": "",
        "mode": "man",
        "summary": "aa-status - display various information about the current AppArmor policy.",
        "synopsis": "aa-status [option]",
        "tldr_summary": "List currently loaded AppArmor modules.",
        "tldr_examples": [
            {
                "description": "Check status",
                "command": "sudo aa-status"
            },
            {
                "description": "Display status in JSON format",
                "command": "sudo aa-status --json"
            },
            {
                "description": "Display status in pretty JSON format",
                "command": "sudo aa-status --pretty-json"
            },
            {
                "description": "Display the number of loaded policies",
                "command": "sudo aa-status --profiled"
            },
            {
                "description": "Display the number of loaded enforicing policies",
                "command": "sudo aa-status --enforced"
            },
            {
                "description": "Display the number of loaded non-enforcing policies",
                "command": "sudo aa-status --complaining"
            },
            {
                "description": "Display the number of loaded enforcing policies that kill tasks",
                "command": "sudo aa-status --kill"
            }
        ],
        "tldr_source": "official",
        "flags": [
            {
                "flag": "",
                "long": "--enabled",
                "arg": null,
                "description": "returns error code if AppArmor is not enabled."
            },
            {
                "flag": "",
                "long": "--profiled",
                "arg": null,
                "description": "displays the number of loaded AppArmor policies."
            },
            {
                "flag": "",
                "long": "--enforced",
                "arg": null,
                "description": "displays the number of loaded enforcing AppArmor policies."
            },
            {
                "flag": "",
                "long": "--complaining",
                "arg": null,
                "description": "displays the number of loaded non-enforcing AppArmor policies."
            },
            {
                "flag": "",
                "long": "--kill",
                "arg": null,
                "description": "displays the number of loaded enforcing AppArmor policies that will kill tasks on policy violations."
            },
            {
                "flag": "",
                "long": "--special-unconfined",
                "arg": null,
                "description": "displays the number of loaded non-enforcing AppArmor policies that are in the special unconfined mode. --process-mixed displays the number of processes confined by profile stacks with profiles in different modes."
            },
            {
                "flag": "",
                "long": "--verbose",
                "arg": null,
                "description": "displays multiple data points about loaded AppArmor policy set (the default action if no arguments are given)."
            },
            {
                "flag": "",
                "long": "--json",
                "arg": null,
                "description": "displays multiple data points about loaded AppArmor policy set in a JSON format, fit for machine consumption."
            },
            {
                "flag": "",
                "long": "--pretty-json",
                "arg": null,
                "description": "same as --json, formatted to be readable by humans as well as by machines."
            },
            {
                "flag": "",
                "long": "--help",
                "arg": null,
                "description": "displays a short usage statement."
            }
        ],
        "examples": [],
        "see_also": [
            {
                "name": "apparmor",
                "section": "7",
                "url": "https://www.chedong.com/phpMan.php/man/apparmor/7/json"
            },
            {
                "name": "apparmor.d",
                "section": "5",
                "url": "https://www.chedong.com/phpMan.php/man/apparmor.d/5/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 16,
                "subsections": []
            },
            {
                "name": "OPTIONS",
                "lines": 2,
                "subsections": [
                    {
                        "name": "--enabled",
                        "lines": 2,
                        "long": "--enabled"
                    },
                    {
                        "name": "--profiled",
                        "lines": 2,
                        "long": "--profiled"
                    },
                    {
                        "name": "--enforced",
                        "lines": 2,
                        "long": "--enforced"
                    },
                    {
                        "name": "--complaining",
                        "lines": 2,
                        "long": "--complaining"
                    },
                    {
                        "name": "--kill",
                        "lines": 3,
                        "long": "--kill"
                    },
                    {
                        "name": "--special-unconfined",
                        "lines": 5,
                        "long": "--special-unconfined"
                    },
                    {
                        "name": "--verbose",
                        "lines": 3,
                        "long": "--verbose"
                    },
                    {
                        "name": "--json",
                        "lines": 3,
                        "long": "--json"
                    },
                    {
                        "name": "--pretty-json",
                        "lines": 2,
                        "long": "--pretty-json"
                    },
                    {
                        "name": "--help",
                        "lines": 2,
                        "long": "--help"
                    }
                ]
            },
            {
                "name": "EXIT STATUS",
                "lines": 15,
                "subsections": []
            },
            {
                "name": "BUGS",
                "lines": 7,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 5,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "aa-status - display various information about the current AppArmor policy.\n",
                "subsections": []
            },
            "SYNOPSIS": {
                "content": "aa-status [option]\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "aa-status will report various aspects of the current state of AppArmor confinement. By\ndefault, it displays the same information as if the --verbose argument were given. A sample\nof what this looks like is:\n\napparmor module is loaded.\n110 profiles are loaded.\n102 profiles are in enforce mode.\n8 profiles are in complain mode.\nOut of 129 processes running:\n13 processes have profiles defined.\n8 processes have profiles in enforce mode.\n5 processes have profiles in complain mode.\n\nOther argument options are provided to report individual aspects, to support being used in\nscripts.\n",
                "subsections": []
            },
            "OPTIONS": {
                "content": "aa-status accepts only one argument at a time out of:\n",
                "subsections": [
                    {
                        "name": "--enabled",
                        "content": "returns error code if AppArmor is not enabled.\n",
                        "long": "--enabled"
                    },
                    {
                        "name": "--profiled",
                        "content": "displays the number of loaded AppArmor policies.\n",
                        "long": "--profiled"
                    },
                    {
                        "name": "--enforced",
                        "content": "displays the number of loaded enforcing AppArmor policies.\n",
                        "long": "--enforced"
                    },
                    {
                        "name": "--complaining",
                        "content": "displays the number of loaded non-enforcing AppArmor policies.\n",
                        "long": "--complaining"
                    },
                    {
                        "name": "--kill",
                        "content": "displays the number of loaded enforcing AppArmor policies that will kill tasks on policy\nviolations.\n",
                        "long": "--kill"
                    },
                    {
                        "name": "--special-unconfined",
                        "content": "displays the number of loaded non-enforcing AppArmor policies that are in the special\nunconfined mode.\n\n--process-mixed displays the number of processes confined by profile stacks with profiles in\ndifferent modes.",
                        "long": "--special-unconfined"
                    },
                    {
                        "name": "--verbose",
                        "content": "displays multiple data points about loaded AppArmor policy set (the default action if no\narguments are given).\n",
                        "long": "--verbose"
                    },
                    {
                        "name": "--json",
                        "content": "displays multiple data points about loaded AppArmor policy set in a JSON format, fit for\nmachine consumption.\n",
                        "long": "--json"
                    },
                    {
                        "name": "--pretty-json",
                        "content": "same as --json, formatted to be readable by humans as well as by machines.\n",
                        "long": "--pretty-json"
                    },
                    {
                        "name": "--help",
                        "content": "displays a short usage statement.\n",
                        "long": "--help"
                    }
                ]
            },
            "EXIT STATUS": {
                "content": "Upon exiting, aa-status will set its exit status to the following values:\n\n0   if apparmor is enabled and policy is loaded.\n\n1   if apparmor is not enabled/loaded.\n\n2   if apparmor is enabled but no policy is loaded.\n\n3   if the apparmor control files aren't available under /sys/kernel/security/.\n\n4   if the user running the script doesn't have enough privileges to read the apparmor\ncontrol files.\n\n42  if an internal error occurred.\n",
                "subsections": []
            },
            "BUGS": {
                "content": "aa-status must be run as root to read the state of the loaded policy from the apparmor\nmodule. It uses the /proc filesystem to determine which processes are confined and so is\nsusceptible to race conditions.\n\nIf you find any additional bugs, please report them at\n<https://gitlab.com/apparmor/apparmor/-/issues>.\n",
                "subsections": []
            },
            "SEE ALSO": {
                "content": "apparmor(7), apparmor.d(5), and <https://wiki.apparmor.net>.\n\n\n\nAppArmor 3.0.4                               2025-08-15                                 AA-STATUS(8)",
                "subsections": []
            }
        }
    }
}