diff --git a/res/res_agi.c b/res/res_agi.c
index 6151549e302dfc36a345b07b755f6e8bba161e4e..80d71ed6741196eb1419533bb7f5d907112e5d7b 100644
--- a/res/res_agi.c
+++ b/res/res_agi.c
@@ -2752,6 +2752,11 @@ static int agi_handle_command(struct ast_channel *chan, AGI *agi, char *buf, int
 		the module we are using */
 		if (c->mod != ast_module_info->self)
 			ast_module_ref(c->mod);
+		/* If the AGI command being executed is an actual application (using agi exec)
+		the app field will be updated in pbx_exec via handle_exec */
+		if (chan->cdr && !ast_check_hangup(chan) && strcasecmp(argv[0], "EXEC"))
+			ast_cdr_setapp(chan->cdr, "AGI", buf);
+
 		res = c->handler(chan, agi, argc, argv);
 		if (c->mod != ast_module_info->self)
 			ast_module_unref(c->mod);