<!--
{
  "availability" : [
    "iOS: 18.0.0 -",
    "iPadOS: 18.0.0 -",
    "macCatalyst: -",
    "macOS: 26.0.0 -",
    "watchOS: 26.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AppIntents",
  "identifier" : "/documentation/AppIntents/ControlConfigurationIntent",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "App Intents"
    ],
    "preciseIdentifier" : "s:10AppIntents26ControlConfigurationIntentP"
  },
  "title" : "ControlConfigurationIntent"
}
-->

# ControlConfigurationIntent

An interface for configuring a Control Center module.

```
protocol ControlConfigurationIntent : AppIntent
```

## Overview

The parameters of your intent define all of the configuration options
for your control.

```swift
struct SelectFocusIntent: ControlConfigurationIntent {
    static let title: LocalizedStringResource = "Select Focus"
    static let description: IntentDescription = "Turn Focus on to silence notifications and filter out distractions."

    struct FocusOptionsProvider: DynamicOptionsProvider {
        func results() async throws -> [Focus] {
            FocusManager.shared.allFocuses
        }
    }

    @Parameter(title: "Focus", default: .doNotDisturb, optionsProvider: FocusOptionsProvider())
    var focus: Focus
}
```

When using this protocol, you don’t need to provide an implementation
for [`perform()`](/documentation/AppIntents/AppIntent/perform()). You can, however, still implement `perform()` to
use the same implementation for both control configuration and as an actionable
intent.

The example above provides a default value for the `focus` intent parameter. By providing a default value,
you can use a non-optional value for the intent parameter. If you don’t provide a default value for the intent parameter,
the parameter’s value must be optional, to allow the system to preview the control before someone configures it.

## Topics

### Associated Types

[`associatedtype NeverResult`](/documentation/AppIntents/ControlConfigurationIntent/NeverResult)

## Relationships

### Inherits From

[`PersistentlyIdentifiable`](/documentation/AppIntents/PersistentlyIdentifiable)

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

[`AppIntent`](/documentation/AppIntents/AppIntent)

[`Sendable`](/documentation/Swift/Sendable)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)