diff --git a/arkindex/ponos/api.py b/arkindex/ponos/api.py
index d112bccde8ba1b44081d828a3a5418f505f3769a..2689f09e60d4a4c53da2e3162435ecc33f8ddcc6 100644
--- a/arkindex/ponos/api.py
+++ b/arkindex/ponos/api.py
@@ -152,11 +152,12 @@ class AgentDetails(RetrieveAPIView):
     """
     Retrieve details of an agent including its running tasks
 
-    Requires authentication with a verified e-mail address.
+    Requires authentication with a verified e-mail address. Cannot be used with Ponos agent or task authentication.
     """
+    authentication_classes = (TokenAuthentication, SessionAuthentication)
     permission_classes = (IsVerified, )
     serializer_class = AgentDetailsSerializer
-    queryset = Agent.objects.all()
+    queryset = Agent.objects.select_related('farm')
 
 
 @extend_schema(
diff --git a/arkindex/ponos/tests/test_api.py b/arkindex/ponos/tests/test_api.py
index 40bc1c910ca61d52dd083c0b7f7fa19e0d08640f..917ffa0553ab9893eecf820884701b02f61a1d87 100644
--- a/arkindex/ponos/tests/test_api.py
+++ b/arkindex/ponos/tests/test_api.py
@@ -1948,6 +1948,25 @@ class TestAPI(FixtureAPITestCase):
             },
         )
 
+    def test_retrieve_agent_requires_login(self):
+        with self.assertNumQueries(0):
+            response = self.client.get(
+                reverse("api:agent-details", kwargs={"pk": str(self.agent.id)}),
+                HTTP_AUTHORIZATION=f"Bearer {self.agent.token.access_token}",
+            )
+            self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
+
+    def test_retrieve_agent_requires_verified(self):
+        self.user.verified_email = False
+        self.user.save()
+        self.client.force_login(self.user)
+
+        with self.assertNumQueries(2):
+            response = self.client.get(
+                reverse("api:agent-details", kwargs={"pk": str(self.agent.id)}),
+            )
+            self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
+
     def test_retrieve_agent_details(self):
         """
         The view returns an agents with its details and associated running tasks
@@ -1967,8 +1986,9 @@ class TestAPI(FixtureAPITestCase):
             ]
         )
         running_task = self.agent.tasks.get(state=State.Running)
-        self.client.force_login(self.superuser)
-        with self.assertNumQueries(7):
+        self.client.force_login(self.user)
+
+        with self.assertNumQueries(6):
             response = self.client.get(
                 reverse("api:agent-details", kwargs={"pk": str(self.agent.id)})
             )
@@ -2023,6 +2043,22 @@ class TestAPI(FixtureAPITestCase):
             },
         )
 
+    def test_retrieve_agent_agent_forbidden(self):
+        with self.assertNumQueries(0):
+            response = self.client.get(
+                reverse("api:agent-details", kwargs={"pk": str(self.agent.id)}),
+                HTTP_AUTHORIZATION=f"Bearer {self.agent.token.access_token}",
+            )
+            self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
+
+    def test_retrieve_agent_task_forbidden(self):
+        with self.assertNumQueries(0):
+            response = self.client.get(
+                reverse("api:agent-details", kwargs={"pk": str(self.agent.id)}),
+                HTTP_AUTHORIZATION=f"Ponos {self.task1.token}",
+            )
+            self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
+
     def test_list_farms_requires_login(self):
         with self.assertNumQueries(0):
             response = self.client.get(reverse("api:farm-list"))
diff --git a/arkindex/project/tests/test_ponos_view.py b/arkindex/project/tests/test_ponos_view.py
index d30e5393f1edc12a5d4de6180984569d65b24da8..f4f3cd4400ec05b8728e2afc087de0d17d0d25c0 100644
--- a/arkindex/project/tests/test_ponos_view.py
+++ b/arkindex/project/tests/test_ponos_view.py
@@ -4,7 +4,7 @@ from rest_framework import status
 
 from arkindex.documents.models import Corpus
 from arkindex.ponos.authentication import AgentUser
-from arkindex.ponos.models import Agent, Artifact, Farm
+from arkindex.ponos.models import Artifact, Farm
 from arkindex.process.models import ProcessMode
 from arkindex.project.tests import FixtureAPITestCase
 from arkindex.users.models import Role, User
@@ -30,36 +30,6 @@ class TestPonosView(FixtureAPITestCase):
         process.corpus = cls.process_corpus
         process.save()
 
-        cls.agent = Agent.objects.create(
-            cpu_cores=3,
-            cpu_frequency=3e9,
-            farm=Farm.objects.create(),
-            ram_total=2e9,
-            last_ping='1999-09-09',
-        )
-
-    def test_retrieve_agent_requires_login(self):
-        """
-        Only authenticated users should have the ability to retrieve details of an agent
-        """
-        response = self.client.get(reverse('api:agent-details', kwargs={'pk': str(self.agent.id)}))
-        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
-
-    def test_retrieve_agent_requires_verified(self):
-        """
-        Only verified users should have the ability to retrieve details of an agent
-        """
-        self.user.verified_email = False
-        self.user.save()
-        self.client.force_login(self.user)
-        response = self.client.get(reverse('api:agent-details', kwargs={'pk': str(self.agent.id)}))
-        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
-
-    def test_retrieve_agent(self):
-        self.client.force_login(self.user)
-        response = self.client.get(reverse('api:agent-details', kwargs={'pk': str(self.agent.id)}))
-        self.assertEqual(response.status_code, status.HTTP_200_OK)
-
     def test_update_task(self):
         """
         Only users with an admin privilege have the ability to update a process task