diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index ea0a57f158cafe047fba57c9f7ce35e0b5217833..996e5f619c1f8da63cb4d4d5b971a08750210c99 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1,22 +1,22 @@
 # Auto-generated by the tools/mkowners/mkowners.py tool
 # Uses OWNERS files in different modules throughout the
 # repository as the source of truth for module ownership.
-* @a11r @nicolasnoble @ctiller
-bazel/* @nicolasnoble @dgquintas @ctiller
-cmake/* @jtattermusch @a11r @nicolasnoble @ctiller
+** @a11r @nicolasnoble @ctiller
+bazel/** @nicolasnoble @dgquintas @ctiller
+cmake/** @jtattermusch @a11r @nicolasnoble @ctiller
 doc/PROTOCOL-HTTP2.md @ejona86 @a11r @nicolasnoble @ctiller
 doc/interop-test-descriptions.md @ejona86 @a11r @nicolasnoble @ctiller
-etc/* @jboeuf @nicolasnoble @a11r @ctiller
-include/* @ctiller @markdroth @dgquintas @a11r @nicolasnoble
-src/core/* @ctiller @markdroth @dgquintas @a11r @nicolasnoble
-src/cpp/* @ctiller @markdroth @dgquintas @a11r @nicolasnoble
-src/csharp/* @jtattermusch @apolcyn @a11r @nicolasnoble @ctiller
-src/node/* @murgatroid99 @a11r @nicolasnoble @ctiller
-src/objective-c/* @muxi @makdharma @a11r @nicolasnoble @ctiller
-src/php/* @stanley-cheung @murgatroid99 @a11r @nicolasnoble @ctiller
-src/python/* @nathanielmanistaatgoogle @kpayson64 @a11r @nicolasnoble @ctiller
-src/ruby/* @apolcyn @murgatroid99 @a11r @nicolasnoble @ctiller
-tools/* @matt-kwong @jtattermusch @nicolasnoble @a11r @ctiller
-tools/codegen/core/* @ctiller @dgquintas @markdroth
-tools/dockerfile/* @matt-kwong @jtattermusch @nicolasnoble @a11r @ctiller
-tools/run_tests/* @matt-kwong @jtattermusch @nicolasnoble @a11r @ctiller
+etc/** @jboeuf @nicolasnoble @a11r @ctiller
+include/** @ctiller @markdroth @dgquintas @a11r @nicolasnoble
+src/core/** @ctiller @markdroth @dgquintas @a11r @nicolasnoble
+src/cpp/** @ctiller @markdroth @dgquintas @a11r @nicolasnoble
+src/csharp/** @jtattermusch @apolcyn @a11r @nicolasnoble @ctiller
+src/node/** @murgatroid99 @a11r @nicolasnoble @ctiller
+src/objective-c/** @muxi @makdharma @a11r @nicolasnoble @ctiller
+src/php/** @stanley-cheung @murgatroid99 @a11r @nicolasnoble @ctiller
+src/python/** @nathanielmanistaatgoogle @kpayson64 @a11r @nicolasnoble @ctiller
+src/ruby/** @apolcyn @murgatroid99 @a11r @nicolasnoble @ctiller
+tools/** @matt-kwong @jtattermusch @nicolasnoble @a11r @ctiller
+tools/codegen/core/** @ctiller @dgquintas @markdroth
+tools/dockerfile/** @matt-kwong @jtattermusch @nicolasnoble @a11r @ctiller
+tools/run_tests/** @matt-kwong @jtattermusch @nicolasnoble @a11r @ctiller
diff --git a/tools/mkowners/mkowners.py b/tools/mkowners/mkowners.py
index 81f26b1164d2236af2b79ea43bf835852a03e079..d4a3b56a858ac9b27e5cfab61429026eaf5317e4 100755
--- a/tools/mkowners/mkowners.py
+++ b/tools/mkowners/mkowners.py
@@ -141,7 +141,7 @@ def add_parent_to_globs(parent, globs):
   for owners in owners_data:
     if owners.dir == parent:
       for directive in owners.directives:
-        for dglob in directive.globs or ['*']:
+        for dglob in directive.globs or ['**']:
           for gglob, glob in globs.items():
             if glob_intersect(dglob, gglob):
               if directive.who not in glob:
@@ -163,7 +163,7 @@ with open(args.out, 'w') as out:
       continue
     globs = collections.OrderedDict()
     for directive in head.directives:
-      for glob in directive.globs or ['*']:
+      for glob in directive.globs or ['**']:
         if glob not in globs:
           globs[glob] = []
         globs[glob].append(directive.who)