diff --git a/scripts/arcanist.php b/scripts/arcanist.php
--- a/scripts/arcanist.php
+++ b/scripts/arcanist.php
@@ -671,7 +671,8 @@
   ArcanistWorkingCopyIdentity $working_copy,
   array $original_argv) {
 
-  $project_id = $working_copy->getProjectID();
+  // TODO
+  $project_id = $working_copy->getProjectConfig('project.name');
   if ($project_id != 'arcanist' && $project_id != 'libphutil') {
     // We're not in a copy of arcanist or libphutil.
     return;
diff --git a/src/configuration/ArcanistSettings.php b/src/configuration/ArcanistSettings.php
--- a/src/configuration/ArcanistSettings.php
+++ b/src/configuration/ArcanistSettings.php
@@ -49,15 +49,6 @@
           'Associates this working copy with a specific installation of '.
           'Phabricator.'),
       ),
-      'project.name' => array(
-        'type' => 'string',
-        'legacy' => 'project_id',
-        'example' => '"arcanist"',
-        'help' => pht(
-          'Associates this working copy with a named Arcanist Project. '.
-          'This is primarily useful if you use SVN and have several different '.
-          'projects in the same repository.'),
-      ),
       'lint.engine' => array(
         'type' => 'string',
         'legacy' => 'lint_engine',
diff --git a/src/parser/ArcanistBundle.php b/src/parser/ArcanistBundle.php
--- a/src/parser/ArcanistBundle.php
+++ b/src/parser/ArcanistBundle.php
@@ -9,7 +9,6 @@
   private $conduit;
   private $blobs = array();
   private $diskPath;
-  private $projectID;
   private $baseRevision;
   private $revisionID;
   private $encoding;
@@ -63,15 +62,6 @@
     return $this;
   }
 
-  public function setProjectID($project_id) {
-    $this->projectID = $project_id;
-    return $this;
-  }
-
-  public function getProjectID() {
-    return $this->projectID;
-  }
-
   public function setBaseRevision($base_revision) {
     $this->baseRevision = $base_revision;
     return $this;
@@ -143,7 +133,6 @@
         $path);
       $meta_info = $future->resolveJSON();
       $version       = idx($meta_info, 'version', 0);
-      $project_name  = idx($meta_info, 'projectName');
       $base_revision = idx($meta_info, 'baseRevision');
       $revision_id   = idx($meta_info, 'revisionID');
       $encoding      = idx($meta_info, 'encoding');
@@ -152,7 +141,6 @@
     } else {
       // this arc bundle was probably made before we started storing meta info
       $version       = 0;
-      $project_name  = null;
       $base_revision = null;
       $revision_id   = null;
       $encoding      = null;
@@ -178,7 +166,6 @@
     $obj = new ArcanistBundle();
     $obj->changes = $changes;
     $obj->diskPath = $path;
-    $obj->setProjectID($project_name);
     $obj->setBaseRevision($base_revision);
     $obj->setRevisionID($revision_id);
     $obj->setEncoding($encoding);
@@ -228,7 +215,6 @@
 
     $meta_info = array(
       'version'      => 5,
-      'projectName'  => $this->getProjectID(),
       'baseRevision' => $this->getBaseRevision(),
       'revisionID'   => $this->getRevisionID(),
       'encoding'     => $this->getEncoding(),
diff --git a/src/repository/api/ArcanistSubversionAPI.php b/src/repository/api/ArcanistSubversionAPI.php
--- a/src/repository/api/ArcanistSubversionAPI.php
+++ b/src/repository/api/ArcanistSubversionAPI.php
@@ -648,17 +648,7 @@
     ConduitClient $conduit,
     array $query) {
 
-    // We don't have much to go on in SVN, look for revisions that came from
-    // this directory and belong to the same project.
-
-    $project = $this->getWorkingCopyIdentity()->getProjectID();
-    if (!$project) {
-      return array();
-    }
-
-    $results = $conduit->callMethodSynchronous(
-      'differential.query',
-      $query);
+    $results = $conduit->callMethodSynchronous('differential.query', $query);
 
     foreach ($results as $key => $result) {
       if ($result['sourcePath'] != $this->getPath()) {
@@ -667,8 +657,7 @@
     }
 
     foreach ($results as $key => $result) {
-      $results[$key]['why'] = pht(
-        'Matching arcanist project name and working copy directory path.');
+      $results[$key]['why'] = pht('Matching working copy directory path.');
     }
 
     return $results;
diff --git a/src/workflow/ArcanistDiffWorkflow.php b/src/workflow/ArcanistDiffWorkflow.php
--- a/src/workflow/ArcanistDiffWorkflow.php
+++ b/src/workflow/ArcanistDiffWorkflow.php
@@ -2240,11 +2240,6 @@
       }
     }
 
-    $project_id = null;
-    if ($this->requiresWorkingCopy()) {
-      $project_id = $this->getWorkingCopy()->getProjectID();
-    }
-
     $data = array(
       'sourceMachine'             => php_uname('n'),
       'sourcePath'                => $source_path,
diff --git a/src/workflow/ArcanistExportWorkflow.php b/src/workflow/ArcanistExportWorkflow.php
--- a/src/workflow/ArcanistExportWorkflow.php
+++ b/src/workflow/ArcanistExportWorkflow.php
@@ -225,7 +225,6 @@
         }
 
         $bundle = ArcanistBundle::newFromChanges($changes);
-        $bundle->setProjectID($this->getWorkingCopy()->getProjectID());
         $bundle->setBaseRevision(
           $repository_api->getSourceControlBaseRevision());
         // NOTE: we can't get a revision ID for SOURCE_LOCAL
@@ -247,18 +246,6 @@
     }
 
     $try_encoding = nonempty($this->getArgument('encoding'), null);
-    if (!$try_encoding) {
-      try {
-        $project_info = $this->getConduit()->callMethodSynchronous(
-          'arcanist.projectinfo',
-          array(
-            'name' => $bundle->getProjectID(),
-          ));
-        $try_encoding = $project_info['encoding'];
-      } catch (ConduitClientException $e) {
-        $try_encoding = null;
-      }
-    }
 
     if ($try_encoding) {
       $bundle->setEncoding($try_encoding);
diff --git a/src/workflow/ArcanistPatchWorkflow.php b/src/workflow/ArcanistPatchWorkflow.php
--- a/src/workflow/ArcanistPatchWorkflow.php
+++ b/src/workflow/ArcanistPatchWorkflow.php
@@ -954,35 +954,6 @@
   private function sanityCheck(ArcanistBundle $bundle) {
     $repository_api = $this->getRepositoryAPI();
 
-    // Check to see if the bundle's project id matches the working copy
-    // project id
-    $bundle_project_id = $bundle->getProjectID();
-    $working_copy_project_id = $this->getWorkingCopy()->getProjectID();
-    if (empty($bundle_project_id)) {
-      // this means $source is SOURCE_PATCH || SOURCE_BUNDLE w/ $version = 0
-      // they don't come with a project id so just do nothing
-    } else if ($bundle_project_id != $working_copy_project_id) {
-      if ($working_copy_project_id) {
-        $issue = pht(
-          "This patch is for the '%s' project, but the working copy ".
-          "belongs to the '%s' project.",
-          $bundle_project_id,
-          $working_copy_project_id);
-      } else {
-        $issue = pht(
-          "This patch is for the '%s' project, but the working copy does ".
-          "not have an '%s' file to identify which project it belongs to.",
-          $bundle_project_id,
-          '.arcconfig');
-      }
-      $ok = phutil_console_confirm(
-        pht('%s Still try to apply the patch?', $issue),
-        $default_no = false);
-      if (!$ok) {
-        throw new ArcanistUserAbortException();
-      }
-    }
-
     // Check to see if the bundle's base revision matches the working copy
     // base revision
     if ($repository_api->supportsLocalCommits()) {
diff --git a/src/workflow/ArcanistWorkflow.php b/src/workflow/ArcanistWorkflow.php
--- a/src/workflow/ArcanistWorkflow.php
+++ b/src/workflow/ArcanistWorkflow.php
@@ -1173,7 +1173,6 @@
     $bundle->setConduit($conduit);
     // since the conduit method has changes, assume that these fields
     // could be unset
-    $bundle->setProjectID(idx($diff, 'projectName'));
     $bundle->setBaseRevision(idx($diff, 'sourceControlBaseRevision'));
     $bundle->setRevisionID(idx($diff, 'revisionID'));
     $bundle->setAuthorName(idx($diff, 'authorName'));
@@ -1520,58 +1519,7 @@
   }
 
   final protected function getRepositoryEncoding() {
-    $default = 'UTF-8';
-    return nonempty(idx($this->getProjectInfo(), 'encoding'), $default);
-  }
-
-  final protected function getProjectInfo() {
-    if ($this->projectInfo === null) {
-      $project_id = $this->getWorkingCopy()->getProjectID();
-      if (!$project_id) {
-        $this->projectInfo = array();
-      } else {
-        try {
-          $this->projectInfo = $this->getConduit()->callMethodSynchronous(
-            'arcanist.projectinfo',
-            array(
-              'name' => $project_id,
-            ));
-        } catch (ConduitClientException $ex) {
-          if ($ex->getErrorCode() != 'ERR-BAD-ARCANIST-PROJECT') {
-            throw $ex;
-          }
-
-          // TODO: Implement a proper query method that doesn't throw on
-          // project not found. We just swallow this because some pathways,
-          // like Git with uncommitted changes in a repository with a new
-          // project ID, may attempt to access project information before
-          // the project is created. See T2153.
-          return array();
-        }
-      }
-    }
-
-    return $this->projectInfo;
-  }
-
-  final protected function loadProjectRepository() {
-    $project = $this->getProjectInfo();
-    if (isset($project['repository'])) {
-      return $project['repository'];
-    }
-    // NOTE: The rest of the code is here for backwards compatibility.
-
-    $repository_phid = idx($project, 'repositoryPHID');
-    if (!$repository_phid) {
-      return array();
-    }
-
-    $repositories = $this->getConduit()->callMethodSynchronous(
-      'repository.query',
-      array());
-    $repositories = ipull($repositories, null, 'phid');
-
-    return idx($repositories, $repository_phid, array());
+    return 'UTF-8';
   }
 
   final protected function newInteractiveEditor($text) {
@@ -1802,40 +1750,6 @@
         'repository.callsign');
     }
 
-    $project_info = $this->getProjectInfo();
-    $project_name = $this->getWorkingCopy()->getProjectID();
-    if ($this->getProjectInfo()) {
-      if (!empty($project_info['repository']['callsign'])) {
-        $callsign = $project_info['repository']['callsign'];
-        $query = array(
-          'callsigns' => array($callsign),
-        );
-        $reasons[] = pht(
-          'Configuration value "%s" is set to "%s"; this project '.
-          'is associated with the "%s" repository.',
-          'project.name',
-          $project_name,
-          $callsign);
-        return array($query, $reasons);
-      } else {
-        $reasons[] = pht(
-          'Configuration value "%s" is set to "%s", but this '.
-          'project is not associated with a repository.',
-          'project.name',
-          $project_name);
-      }
-    } else if (strlen($project_name)) {
-      $reasons[] = pht(
-        'Configuration value "%s" is set to "%s", but that '.
-        'project does not exist.',
-        'project.name',
-        $project_name);
-    } else {
-      $reasons[] = pht(
-        'Configuration value "%s" is empty.',
-        'project.name');
-    }
-
     $uuid = $this->getRepositoryAPI()->getRepositoryUUID();
     if ($uuid !== null) {
       $query = array(
diff --git a/src/workingcopyidentity/ArcanistWorkingCopyIdentity.php b/src/workingcopyidentity/ArcanistWorkingCopyIdentity.php
--- a/src/workingcopyidentity/ArcanistWorkingCopyIdentity.php
+++ b/src/workingcopyidentity/ArcanistWorkingCopyIdentity.php
@@ -216,16 +216,6 @@
     $this->projectConfig = $config;
   }
 
-  public function getProjectID() {
-    $project_id = $this->getProjectConfig('project.name');
-    if ($project_id) {
-      return $project_id;
-    }
-
-    // This is an older name for the setting.
-    return $this->getProjectConfig('project_id');
-  }
-
   public function getProjectRoot() {
     return $this->projectRoot;
   }