diff --git a/src/main/java/com/google/devtools/build/lib/util/UserUtils.java b/src/main/java/com/google/devtools/build/lib/util/UserUtils.java
index 08e6f09..84fb215 100644
--- a/src/main/java/com/google/devtools/build/lib/util/UserUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/util/UserUtils.java
@@ -18,15 +18,11 @@
 
 import com.google.common.base.Strings;
 
-import java.util.Map;
-
 /**
  * User information utility methods.
  */
 public final class UserUtils {
 
-  private static final String ORIGINATING_USER_KEY = "BLAZE_ORIGINATING_USER";
-
   private UserUtils() {
     // prohibit instantiation
   }
@@ -45,16 +41,11 @@
   /**
    * Returns the originating user for this build from the command-line or the environment.
    */
-  public static String getOriginatingUser(String originatingUser,
-                                          Map<String, String> clientEnv) {
+  public static String getOriginatingUser(String originatingUser) {
     if (!Strings.isNullOrEmpty(originatingUser)) {
       return originatingUser;
     }
 
-    if (!Strings.isNullOrEmpty(clientEnv.get(ORIGINATING_USER_KEY))) {
-      return clientEnv.get(ORIGINATING_USER_KEY);
-    }
-
     return UserUtils.getUserName();
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/util/UserUtilsTest.java b/src/test/java/com/google/devtools/build/lib/util/UserUtilsTest.java
deleted file mode 100644
index 5998862..0000000
--- a/src/test/java/com/google/devtools/build/lib/util/UserUtilsTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2014 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package com.google.devtools.build.lib.util;
-
-import static org.junit.Assert.assertEquals;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.devtools.build.lib.testutil.Suite;
-import com.google.devtools.build.lib.testutil.TestSpec;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-import java.util.Map;
-
-/** Unit tests for {@link UserUtils}. */
-@RunWith(JUnit4.class)
-@TestSpec(size = Suite.SMALL_TESTS)
-public class UserUtilsTest {
-
-  private static final String USER = "real_user";
-  private static final Map<String, String> CLIENT_ENV = ImmutableMap
-      .of("BLAZE_ORIGINATING_USER", USER);
-  public static final ImmutableMap<String, String> EMPTY_CLIENT_ENV = ImmutableMap.of();
-
-
-  @Test
-  public void testGetOriginatingUserFromFlag() throws Exception {
-    assertEquals(USER, UserUtils.getOriginatingUser(USER, EMPTY_CLIENT_ENV));
-  }
-
-  @Test
-  public void testGetOriginatingUserFromClientEnv() throws Exception {
-    assertEquals(USER, UserUtils.getOriginatingUser("", CLIENT_ENV));
-  }
-
-  @Test
-  public void testGetOriginatingUserFromUserUtils() {
-    assertEquals(UserUtils.getUserName(), UserUtils.getOriginatingUser("", EMPTY_CLIENT_ENV));
-  }
-}
