diff --git a/program/migrations/0077_add_permissions_to_groups.py b/program/migrations/0077_add_permissions_to_groups.py
new file mode 100644
index 0000000000000000000000000000000000000000..4089916fc13fd5cd970c847d79d75216f1c3a876
--- /dev/null
+++ b/program/migrations/0077_add_permissions_to_groups.py
@@ -0,0 +1,52 @@
+# Generated by Django 4.2.6 on 2023-12-11 20:28
+
+from django.db import migrations
+
+
+def add_permissions_to_groups(apps, _):
+    ContentType = apps.get_model("contenttypes", "ContentType")
+    Group = apps.get_model("auth", "Group")
+    Permission = apps.get_model("auth", "Permission")
+
+    Note = apps.get_model("program", "Note")
+    NoteLink = apps.get_model("program", "NoteLink")
+
+    program = Group.objects.get(name="Program")
+    for permission in Permission.objects.filter(content_type__app_label="program"):
+        program.permissions.add(permission)
+
+    broadcast = Group.objects.get(name="Broadcast")
+    for permission in Permission.objects.filter(
+        content_type__in=[
+            ContentType.objects.get_for_model(Note),
+            ContentType.objects.get_for_model(NoteLink),
+        ]
+    ):
+        broadcast.permissions.add(permission)
+
+    broadcast_plus = Group.objects.get(name="BroadcastPlus")
+    for permission in Permission.objects.filter(
+        codename__in=[
+            # for `Host`
+            "change_biography",
+            "change_email",
+            "change_image",
+            "change_name",
+            # for `Show`
+            "change_description",
+            "change_email",
+            "change_image",
+            "change_logo",
+            "change_name",
+            "change_short_description",
+        ]
+    ):
+        broadcast_plus.permissions.add(permission)
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ("program", "0076_add_permissions_and_groups"),
+    ]
+
+    operations = [migrations.RunPython(code=add_permissions_to_groups)]