diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
index 9361a87061f49288e28b4b05f00d921138e3f3e9..36ae8fe3d51db4b90073244735637d989a433793 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
@@ -150895,6 +150895,50 @@ NULL
 #if (!any(R.version$engine == "FastR")) { c(TRUE, TRUE) } else { tc <- java.type('com.oracle.truffle.r.test.library.fastr.TestJavaInterop$TestNamesClass'); c('staticField', 'staticMethod') %in% names(tc) }
 [1] TRUE TRUE
 
+##com.oracle.truffle.r.test.library.fastr.TestJavaInterop.testNew#
+#if (!any(R.version$engine == "FastR")) { 2147483647 } else { tc <- java.type('com.oracle.truffle.r.test.library.fastr.TestJavaInterop$TestClass'); to <- new(tc); to$fieldInteger }
+[1] 2147483647
+
+##com.oracle.truffle.r.test.library.fastr.TestJavaInterop.testNew#
+#if (!any(R.version$engine == "FastR")) { 2147483647 } else { to <- new('com.oracle.truffle.r.test.library.fastr.TestJavaInterop$TestClass'); to$fieldStaticInteger }
+[1] 2147483647
+
+##com.oracle.truffle.r.test.library.fastr.TestJavaInterop.testNew#
+#if (!any(R.version$engine == "FastR")) { TRUE } else { tc <- java.type('java.lang.Boolean'); to <- new(tc, TRUE); to }
+[1] TRUE
+
+##com.oracle.truffle.r.test.library.fastr.TestJavaInterop.testNew#
+#if (!any(R.version$engine == "FastR")) { TRUE } else { to <- new('java.lang.Boolean', TRUE); to }
+[1] TRUE
+
+##com.oracle.truffle.r.test.library.fastr.TestJavaInterop.testNew#
+#if (!any(R.version$engine == "FastR")) { TRUE } else { to <- new('java/lang/Boolean', TRUE); to }
+[1] TRUE
+
+##com.oracle.truffle.r.test.library.fastr.TestJavaInterop.testNew#
+#if (!any(R.version$engine == "FastR")) { cat('Error in .fastr.interop.new(Class, ...) :', '<<<NEWLINE>>>', ' error during Java object instantiation', '<<<NEWLINE>>>') } else { to <- new('com.oracle.truffle.r.test.library.fastr.TestJavaInterop$TestClass'); new(to) }
+Error in .fastr.interop.new(Class, ...) :
+  error during Java object instantiation
+
+##com.oracle.truffle.r.test.library.fastr.TestJavaInterop.testNew#Context.NoJavaInterop#
+#if (!any(R.version$engine == "FastR")) { cat('Error in getClass(Class, where = topenv(parent.frame())) :', '<<<NEWLINE>>>', ' “__bogus_class_name__” is not a defined class', '<<<NEWLINE>>>') } else { new('__bogus_class_name__'); }
+Error in getClass(Class, where = topenv(parent.frame())) :
+  “__bogus_class_name__” is not a defined class
+
+##com.oracle.truffle.r.test.library.fastr.TestJavaInterop.testNew#
+#if (!any(R.version$engine == "FastR")) { cat('Error in getClass(Class, where = topenv(parent.frame())) :', '<<<NEWLINE>>>', ' “__bogus_class_name__” is not a defined class', '<<<NEWLINE>>>') } else { to <- new('__bogus_class_name__'); }
+Error in getClass(Class, where = topenv(parent.frame())) :
+  “__bogus_class_name__” is not a defined class
+
+##com.oracle.truffle.r.test.library.fastr.TestJavaInterop.testNew#Context.NoJavaInterop#
+#if (!any(R.version$engine == "FastR")) { cat('Error in getClass(Class, where = topenv(parent.frame())) :', '<<<NEWLINE>>>', ' “java.lang.Boolean” is not a defined class', '<<<NEWLINE>>>') } else { new('java.lang.Boolean'); }
+Error in getClass(Class, where = topenv(parent.frame())) :
+  “java.lang.Boolean” is not a defined class
+
+##com.oracle.truffle.r.test.library.fastr.TestJavaInterop.testNew#Context.NoJavaInterop#
+#if (!any(R.version$engine == "FastR")) { cat('integer(0)' } else { new('integer');  }
+Error: unexpected '}' in "if (!any(R.version$engine == "FastR")) { cat('integer(0)' }"
+
 ##com.oracle.truffle.r.test.library.fastr.TestJavaInterop.testNewArray#
 #if (!any(R.version$engine == "FastR")) { '[B' } else { a <- new(java.type('byte[]'), 10L); a$getClass()$getName(); }
 [1] "[B"
@@ -151399,36 +151443,6 @@ NULL
 #if (!any(R.version$engine == "FastR")) { TRUE } else { a <- new(java.type('short[][]'), c(2L, 3L)); is.polyglot.value(a) && length(a) > 0 }
 [1] TRUE
 
-##com.oracle.truffle.r.test.library.fastr.TestJavaInterop.testNewWithJavaClass#
-#if (!any(R.version$engine == "FastR")) { 2147483647 } else { tc <- java.type('com.oracle.truffle.r.test.library.fastr.TestJavaInterop$TestClass'); to <- new(tc); to$fieldInteger }
-[1] 2147483647
-
-##com.oracle.truffle.r.test.library.fastr.TestJavaInterop.testNewWithJavaClass#
-#if (!any(R.version$engine == "FastR")) { 2147483647 } else { to <- new('com.oracle.truffle.r.test.library.fastr.TestJavaInterop$TestClass'); to$fieldStaticInteger }
-[1] 2147483647
-
-##com.oracle.truffle.r.test.library.fastr.TestJavaInterop.testNewWithJavaClass#
-#if (!any(R.version$engine == "FastR")) { TRUE } else { tc <- java.type('java.lang.Boolean'); to <- new(tc, TRUE); to }
-[1] TRUE
-
-##com.oracle.truffle.r.test.library.fastr.TestJavaInterop.testNewWithJavaClass#
-#if (!any(R.version$engine == "FastR")) { TRUE } else { to <- new('java.lang.Boolean', TRUE); to }
-[1] TRUE
-
-##com.oracle.truffle.r.test.library.fastr.TestJavaInterop.testNewWithJavaClass#
-#if (!any(R.version$engine == "FastR")) { TRUE } else { to <- new('java/lang/Boolean', TRUE); to }
-[1] TRUE
-
-##com.oracle.truffle.r.test.library.fastr.TestJavaInterop.testNewWithJavaClass#
-#if (!any(R.version$engine == "FastR")) { cat('Error in .fastr.interop.new(Class, ...) :', '<<<NEWLINE>>>', ' error during Java object instantiation', '<<<NEWLINE>>>') } else { to <- new('com.oracle.truffle.r.test.library.fastr.TestJavaInterop$TestClass'); new(to) }
-Error in .fastr.interop.new(Class, ...) :
-  error during Java object instantiation
-
-##com.oracle.truffle.r.test.library.fastr.TestJavaInterop.testNewWithJavaClass#
-#if (!any(R.version$engine == "FastR")) { cat('Error in getClass(Class, where = topenv(parent.frame())) :', '<<<NEWLINE>>>', ' “__bogus_class_name__” is not a defined class', '<<<NEWLINE>>>') } else { to <- new('__bogus_class_name__'); }
-Error in getClass(Class, where = topenv(parent.frame())) :
-  “__bogus_class_name__” is not a defined class
-
 ##com.oracle.truffle.r.test.library.fastr.TestJavaInterop.testNonPrimitiveParameter#
 #if (!any(R.version$engine == "FastR")) { TRUE } else { to <- .fastr.interop.new(java.type('com.oracle.truffle.r.test.library.fastr.TestJavaInterop$TestClass')); to$equals(to) }
 [1] TRUE
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/TestBase.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/TestBase.java
index 8dd00386cd0de9001a6ed05847088c061fbabc74..7e3bdde2b505a414a1a61b49ed2c9a61da682ed1 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/TestBase.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/TestBase.java
@@ -142,6 +142,7 @@ public class TestBase {
 
     public enum Context implements TestTrait {
         NonShared, // Test requires a new non-shared {@link RContext}.
+        NoJavaInterop, // Test requires a {@link RContext} with disabled host access.
         LongTimeout; // Test requires a long timeout
 
         @Override
@@ -647,7 +648,7 @@ public class TestBase {
             if (skipFastREval) {
                 ignoredInputCount++;
             } else {
-                String result = fastREval(input, contextKind, traits.context.contains(Context.LongTimeout));
+                String result = fastREval(input, contextKind, traits.context.contains(Context.LongTimeout), !traits.context.contains(Context.NoJavaInterop));
                 CheckResult checkResult = checkResult(whiteLists, input, traits.preprocessOutput(expected), traits.preprocessOutput(result), traits);
 
                 result = checkResult.result;
@@ -981,12 +982,16 @@ public class TestBase {
      * {@code nonShared} then this must evaluate in a new, non-shared, {@link RContext}.
      */
     protected String fastREval(String input, ContextKind contextKind, boolean longTimeout) {
+        return fastREval(input, contextKind, longTimeout, true);
+    }
+
+    protected String fastREval(String input, ContextKind contextKind, boolean longTimeout, boolean allowHostAccess) {
         assert contextKind != null;
         microTestInfo.expression = input;
         String result;
         try {
             beforeEval();
-            result = fastROutputManager.fastRSession.eval(this, input, contextKind, longTimeout);
+            result = fastROutputManager.fastRSession.eval(this, input, contextKind, longTimeout, allowHostAccess);
         } catch (Throwable e) {
             String clazz;
             if (e instanceof RInternalError && e.getCause() != null) {
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java
index 9e521c524e63104c0c21a01208cabe7b43dace06..5c9171977d33215290729bb390ab5ea753b85321 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java
@@ -128,13 +128,17 @@ public final class FastRSession implements RSession {
     }
 
     public Context createContext(ContextKind contextKind) {
+        return createContext(contextKind, true);
+    }
+
+    public Context createContext(ContextKind contextKind, boolean allowHostAccess) {
         RStartParams params = new RStartParams(RCmdOptions.parseArguments(Client.R, new String[]{"R", "--vanilla", "--slave", "--silent", "--no-restore"}, false), false);
         Map<String, String> env = new HashMap<>();
         env.put("TZ", "GMT");
         ChildContextInfo ctx = ChildContextInfo.create(params, env, contextKind, contextKind == ContextKind.SHARE_NOTHING ? null : mainRContext, input, output, output);
         RContext.childInfo = ctx;
 
-        return Context.newBuilder("R", "llvm").allowAllAccess(true).engine(mainEngine).build();
+        return Context.newBuilder("R", "llvm").allowAllAccess(true).allowHostAccess(allowHostAccess).engine(mainEngine).build();
     }
 
     private FastRSession() {
@@ -211,12 +215,16 @@ public final class FastRSession implements RSession {
 
     @Override
     public String eval(TestBase testClass, String expression, ContextKind contextKind, boolean longTimeout) throws Throwable {
+        return eval(testClass, expression, contextKind, longTimeout, true);
+    }
+
+    public String eval(TestBase testClass, String expression, ContextKind contextKind, boolean longTimeout, boolean allowHostAccess) throws Throwable {
         assert contextKind != null;
         Timer timer = null;
         output.reset();
         input.setContents(expression);
         try {
-            Context evalContext = createContext(contextKind);
+            Context evalContext = createContext(contextKind, allowHostAccess);
             // set up some interop objects used by fastr-specific tests:
             if (testClass != null) {
                 testClass.addPolyglotSymbols(evalContext);
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/fastr/TestJavaInterop.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/fastr/TestJavaInterop.java
index 7ba1df53d5c72061040ceb965c55f305eef87f00..e5308bf38ca0d6d0bfe4a15caec0bc1c35d78c94 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/fastr/TestJavaInterop.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/fastr/TestJavaInterop.java
@@ -314,7 +314,7 @@ public class TestJavaInterop extends TestBase {
     }
 
     @Test
-    public void testNewWithJavaClass() {
+    public void testNew() {
         assertEvalFastR("tc <- java.type('" + Boolean.class.getName() + "'); to <- new(tc, TRUE); to", "TRUE");
         assertEvalFastR("tc <- java.type('" + TEST_CLASS + "'); to <- new(tc); to$fieldInteger", getRValue(Integer.MAX_VALUE));
 
@@ -326,6 +326,11 @@ public class TestJavaInterop extends TestBase {
         assertEvalFastR("to <- new('" + TEST_CLASS + "'); new(to)", errorIn(".fastr.interop.new(Class, ...)", "error during Java object instantiation"));
 
         assertEvalFastR("to <- new('__bogus_class_name__');", errorIn("getClass(Class, where = topenv(parent.frame()))", "“__bogus_class_name__” is not a defined class"));
+
+        assertEvalFastR(Context.NoJavaInterop, "new('integer'); ", "cat('integer(0)'");
+        assertEvalFastR(Context.NoJavaInterop, "new('" + Boolean.class.getName() + "');",
+                        errorIn("getClass(Class, where = topenv(parent.frame()))", "“" + Boolean.class.getName() + "” is not a defined class"));
+        assertEvalFastR(Context.NoJavaInterop, "new('__bogus_class_name__');", errorIn("getClass(Class, where = topenv(parent.frame()))", "“__bogus_class_name__” is not a defined class"));
     }
 
     @Test