diff --git a/org.eclipse.sisu.inject/src/org/eclipse/sisu/inject/DefaultBeanLocator.java b/org.eclipse.sisu.inject/src/org/eclipse/sisu/inject/DefaultBeanLocator.java
index 3206d27..d8b72bf 100644
--- a/org.eclipse.sisu.inject/src/org/eclipse/sisu/inject/DefaultBeanLocator.java
+++ b/org.eclipse.sisu.inject/src/org/eclipse/sisu/inject/DefaultBeanLocator.java
@@ -19,6 +19,7 @@
 import org.eclipse.sisu.BeanEntry;
 import org.eclipse.sisu.Mediator;
 
+import com.google.inject.Binding;
 import com.google.inject.Injector;
 import com.google.inject.Key;
 import com.google.inject.Singleton;
@@ -177,19 +178,41 @@
     }
 
     /**
-     * Automatically publishes any {@link Injector} that contains a binding to this {@link BeanLocator}.
+     * Automatically publishes any {@link Injector} that contains a binding to this {@link BeanLocator}.<br>
+     * <br>
+     * Relies on Guice's auto-injection, bind the locator with a Provider to disable this feature.
      * 
      * @param injector The injector
      */
     @Inject
     void autoPublish( final Injector injector )
     {
-        staticAutoPublish( this, injector );
+        add( new InjectorBindings( injector ) );
     }
 
+    /**
+     * Automatically publishes child {@link Injector}s that inherit a binding to this {@link BeanLocator}.<br>
+     * <br>
+     * Assumes module(s) used to create the child injector request static injection of this class.
+     * 
+     * @param childInjector The child injector
+     */
     @Inject
-    static void staticAutoPublish( final MutableBeanLocator locator, final Injector injector )
+    static void autoPublishChild( final Injector childInjector )
     {
-        locator.add( new InjectorBindings( injector ) );
+        // Child injectors cannot use the first 'autoPublish' trick because the locator binding is typically inherited
+        // from their parent and the locator instance has already been auto-injected. We workaround this limitation by
+        // requesting static injection of this class in a child module, such as ChildWireModule.
+
+        // When the child injector calls us we introspect the locator binding to see if 'autoPublish' would have been
+        // called in the parent. We avoid checking the provided instance directly since it may have been deliberately
+        // hidden behind a Provider to disable the 'autoPublish' feature, and we need to respect that. Instead we use
+        // the Implementations utility to test whether the binding directly exposes this implementation class.
+
+        final Binding<?> locatorBinding = childInjector.getBinding( MutableBeanLocator.class );
+        if ( DefaultBeanLocator.class.equals( Implementations.find( locatorBinding ) ) )
+        {
+            ( (DefaultBeanLocator) locatorBinding.getProvider().get() ).autoPublish( childInjector );
+        }
     }
 }
diff --git a/org.eclipse.sisu.inject/src/org/eclipse/sisu/wire/ChildWireModule.java b/org.eclipse.sisu.inject/src/org/eclipse/sisu/wire/ChildWireModule.java
index 5b2df52..44e2495 100644
--- a/org.eclipse.sisu.inject/src/org/eclipse/sisu/wire/ChildWireModule.java
+++ b/org.eclipse.sisu.inject/src/org/eclipse/sisu/wire/ChildWireModule.java
@@ -70,7 +70,7 @@
 
     public void configure( final Binder binder )
     {
-        // make sure we're added to locator as early as possible
+        // workaround to support 'autoPublish' in child injectors
         binder.requestStaticInjection( DefaultBeanLocator.class );
 
         // ignore any inherited bindings/dependencies
