diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index cccf0c7c687be39c4cf34771435f7d0c11096829..5b38bcf3c5ec97f9d76fb9316b80b7947f07190f 100644
--- a/src/libstore/build.cc
+++ b/src/libstore/build.cc
@@ -2196,6 +2196,9 @@ void DerivationGoal::startBuilder()
 
         if (chown(slaveName.c_str(), buildUser->getUID(), 0))
             throw SysError("changing owner of pseudoterminal slave");
+    } else {
+        if (grantpt(builderOut.readSide.get()))
+            throw SysError("granting access to pseudoterminal slave");
     }
 
     #if 0