¿Por qué NSUserDefaults no funciona entre mi aplicación y la extensión de compartir?

Tengo una aplicación para iOS con una extensión para compartir. Estoy tratando de compartir datos entre ellos usando NSUserDefaults y App Groups pero, si bien puedo escribir en el objeto NSUD, leerlo ysynchronize() sin error, leer en la extensión siempre da como resultadonil.

Tengo un grupo de aplicaciones, la cadena literal "group.net.foo.bar" para la cual tanto la aplicación como la extensión se han configurado en Capacidades -> Grupos de aplicaciones. Esta cadena está en una estructura de constantes en mi aplicación:

struct Forum {
    static let APP_GROUP = "group.net.foo.bar"
    static let AUTH_KEY = "AUTH_KEY"
}

En la aplicación principal, creo un objeto UserDefaults y le escribo:

fileprivate lazy var userDefaults: UserDefaults = {
    let defaults = UserDefaults()
    defaults.addSuite(named: Forum.APP_GROUP)
    return defaults
}()

// later
userDefaults.set(apiKey, forKey: Forum.AUTH_KEY)
userDefaults.synchronize()

Crear un nuevo objeto NSUD después de esosynchronize() y recuperar la AUTH_KEY funciona. En la extensión, creo un NSUD e intento recuperar el valor, en vano:

private lazy var userDefaults: UserDefaults = {
    let defaults = UserDefaults()
    defaults.addSuite(named: Forum.APP_GROUP)
    return defaults
}()

// later
private func getApiKey() -> String? {
    return userDefaults.string(forKey: Forum.AUTH_KEY)
}
// returns nil

En toda mi lectura de los documentos de Apple y preguntas deprimentemente similares aquí en Stack Overflow, no puedo adivinar lo que hice incorrectamente.

Xcode versión 8.0 (8A218a), también probado con Xcode 8.1 Beta 2. El mismo comportamiento en el simulador y mi iPhone 6s con iOS 10.

Respuestas a la pregunta(2)

Su respuesta a la pregunta