diff --git a/app/views/projects/deploy_tokens/_revoke_modal.html.haml b/app/views/projects/deploy_tokens/_revoke_modal.html.haml
index a67c3a0c841c656aecd49af39c3666dd688b2e34..35eacae2c2e197f8c1b9354421bc877d8e4dc57d 100644
--- a/app/views/projects/deploy_tokens/_revoke_modal.html.haml
+++ b/app/views/projects/deploy_tokens/_revoke_modal.html.haml
@@ -1,4 +1,4 @@
-.modal{ id: "revoke-modal-#{token.id}" }
+.modal{ id: "revoke-modal-#{token.id}", tabindex: -1 }
   .modal-dialog
     .modal-content
       .modal-header
diff --git a/changelogs/unreleased/close-revoke-deploy-token-modal-on-escape-keypress.yml b/changelogs/unreleased/close-revoke-deploy-token-modal-on-escape-keypress.yml
new file mode 100644
index 0000000000000000000000000000000000000000..98316cae40681e1007cdeeb0ea5afebb3a706c52
--- /dev/null
+++ b/changelogs/unreleased/close-revoke-deploy-token-modal-on-escape-keypress.yml
@@ -0,0 +1,5 @@
+---
+title: Close revoke deploy token modal on escape keypress
+merge_request: 20347
+author: George Tsiolis
+type: changed
diff --git a/spec/features/projects/settings/user_sees_revoke_deploy_token_modal_spec.rb b/spec/features/projects/settings/user_sees_revoke_deploy_token_modal_spec.rb
new file mode 100644
index 0000000000000000000000000000000000000000..069704a1305b1533974b61d3abc6020faf5ecd11
--- /dev/null
+++ b/spec/features/projects/settings/user_sees_revoke_deploy_token_modal_spec.rb
@@ -0,0 +1,25 @@
+require 'rails_helper'
+
+describe 'Repository Settings > User sees revoke deploy token modal', :js do
+  let(:project) { create(:project, :public, :repository) }
+  let(:user) { project.creator }
+  let(:role) { :developer }
+  let!(:deploy_token) { create(:deploy_token, :gitlab_deploy_token, projects: [project]) }
+
+  before do
+    project.add_role(user, role)
+    sign_in(user)
+    visit(project_settings_repository_path(project))
+    click_link('Revoke')
+  end
+
+  it 'shows the revoke deploy token modal' do
+    expect(page).to have_content('You are about to revoke')
+  end
+
+  it 'closes the revoke deploy token modal with escape keypress' do
+    find('.modal.show').send_keys(:escape)
+
+    expect(page).not_to have_content('You are about to revoke')
+  end
+end