diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
index a71cdaa..fcf4ad5 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
@@ -2230,7 +2230,9 @@
    */
   private static Object getAttributeNoncomputedDefaultValue(Attribute attr,
       Package.Builder pkgBuilder) {
-    if (attr.getName().equals("licenses")) {
+    // Starlark rules may define their own "licenses" attributes with different types -
+    // we shouldn't trigger the special "licenses" on those cases.
+    if (attr.getName().equals("licenses") && attr.getType() == BuildType.LICENSE) {
       return pkgBuilder.getDefaultLicense();
     }
     if (attr.getName().equals("distribs")) {
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/LicensingTests.java b/src/test/java/com/google/devtools/build/lib/analysis/LicensingTests.java
index b70021a..6447099 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/LicensingTests.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/LicensingTests.java
@@ -32,7 +32,10 @@
 import com.google.devtools.build.lib.packages.License;
 import com.google.devtools.build.lib.packages.License.DistributionType;
 import com.google.devtools.build.lib.packages.License.LicenseParsingException;
+import com.google.devtools.build.lib.packages.RawAttributeMapper;
+import com.google.devtools.build.lib.packages.Rule;
 import com.google.devtools.build.lib.packages.util.MockCcSupport;
+import com.google.devtools.build.lib.syntax.Type;
 import java.util.Arrays;
 import java.util.EnumSet;
 import java.util.HashMap;
@@ -683,6 +686,28 @@
         .testEquals();
   }
 
+  /** Regression fix for https://github.com/bazelbuild/bazel/issues/7194. */
+  @Test
+  public void testStarlarkLicensesAttributeCanUseUseCustomDefault() throws Exception {
+    scratch.file(
+        "foo/rules.bzl",
+        "def _myrule_impl(ctx):",
+        "    return []",
+        "",
+        "myrule = rule(",
+        "    implementation = _myrule_impl,",
+        "    attrs = {",
+        "        'licenses': attr.string(default = 'custom_licenses_default'),",
+        "    }",
+        ")");
+
+    scratch.file("foo/BUILD", "load('//foo:rules.bzl', 'myrule')", "myrule(name = 'hi')");
+
+    assertThat(RawAttributeMapper.of((Rule) getTarget("//foo:hi")).get("licenses", Type.STRING))
+        .isEqualTo("custom_licenses_default");
+    assertNoEvents();
+  }
+
   /**
    * Gets the licenses of all targets that are in the transitive closure of a
    * target. The result includes this target itself.
