I tried the Create Link, if I use the actual string in the llCreateLink it works and performs the link.
However this simple pair of scripts refuse to work
Sphere containing the following script, inside cube
default
{
touch_start(integer total_number)
{
llSay(-123, (string) llGetKey());
llSay(0,(string)llGetKey());
}
}
Cube contains the following script
default
{
state_entry()
{
llRequestPermissions(llGetOwner(),PERMISSION_CHANGE_LINKS );
}
run_time_permissions(integer perm)
{
llListen(-123, "", NULL_KEY,""

;
}
listen( integer channel, string name, key id, string message )
{
llSay(0,message);
llCreateLink( (key) message, TRUE);
llSay(0,"Past Change"

;
llSetTimerEvent(10);
}
changed(integer change) { // something changed
llSay(0,"Entering Changed"

;
if (change & CHANGED_LINK)
{
llSay(0,"Change_link"

;
llOwnerSay("Linked"

;
}
else llSay(0,"Not Change_Link"

;
}
timer()
{
//llRemoveInventory(llGetScriptName());
}
}
Output
Sphere: 8e0d45ee-be8a-31bd-74a4-6894db04f302
Cube: 8e0d45ee-be8a-31bd-74a4-6894db04f302
Cube: Past Change
That's it no Create Link no change link to sphere.
Both are modify, owned by me.
Anybody got any ideas why llCreateLink does not work?