: This paper describes a protection scheme for mobile agents implemented on a Java environment. In this scheme, access to objects is controlled by means of software capabilities that can be exchanged between mutually suspicious agents. Each agent defines the access control rules that must be enforced when interacting with other agents. An important advantage of the proposed scheme is that the definition of the protection policy of an agent (i.e. how access rights are granted to other agents) is completely separated from the application code of that agent. It is described in an extended Interface Definition Language (IDL) at the interface level, thus enforcing modularity and ease of expression. A prototype has been implemented and experiments with simple agent-based applications have shown the feasibility and the advantage of this method.